静态编译跨平台程序

全静态编译程序,是c++跨平台的一个方案之一,如在ubtuntu编译,可以在centos下运行。
-static-libstdc++ -static-libgcc -static
# -static-libstdc++这个是避免使用gcc-4.8.5时产生要链接到新版本的libstdc的问题。如下
# 解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14′ not found
# -static-libgcc是为了解决对gcc的libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1的依赖。
# -static是为了解决其它库的动态库连接依赖,但可能会因某些库不存在静态库,可能报错。
————————————————
Debug版生成调试信息
set(CMAKE_C_FLAGS_DEBUG “${CMAKE_C_FLAGS_DEBUG} -O0 -Wall -g -ggdb3”)
SET(CMAKE_CXX_FLAGS_DEBUG “${CMAKE_CXX_FLAGS_DEBUG} -O0 -Wall -g -ggdb”)
SET(CMAKE_BUILD_TYPE Debug)
SET(CMAKE_BUILD_TYPE Debug CACHE STRING “带cache标记,是不会生成DEBUG调试信息的,也就只是Realse方式”)
Release版本生成调试信息
SET(CMAKE_C_FLAGS_RELEASE “${CMAKE_C_FLAGS_RELEASE} -O3 -Wall -g -ggdb”)
SET(CMAKE_CXX_FLAGS_RELEASE “${CMAKE_CXX_FLAGS_RELEASE} -O3 -Wall -g -ggdb”)
SET(CMAKE_BUILD_TYPE Release)
SET(CMAKE_BUILD_TYPE Relase CACHE STRING “带cache标记,是不会生成调试信息的,也就只是Realse方式”)

也可以外部指定生成方式 cmake -DCMAKE_BUILD_TYPE=Debug ./
—————————————————————
set(CMAKE_C_COMPILER “/gcc-4.8.5/bin/gcc”)
set(CMAKE_CXX_COMPILER “/gcc-4.8.5/bin/g++”)
message(“CMAKE_C_COMPILER=${CMAKE_C_COMPILER}”)
message(“CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}”)
# -static-libstdc++这个是避免使用gcc-4.8.5时产生要链接到新版本的libstdc的问题。如下
# 解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14′ not found
# -static-libgcc是为了解决对gcc的libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1的依赖。
# -static是为了解决其它库的动态库连接依赖,但可能会因某些库不存在静态库,可能报错。
set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -static-libstdc++ -static-libgcc -std=c++11”)
#set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -static-libstdc++ -static-libgcc -static -std=c++11”)