使用docker环境编译
-
使用
alpine
镜像,alpine
系统包含各个系统架构的镜像,alpine
使用的是musl libc
alpine - Official Image | Docker Hub
docker run
可以通过--platform=linux/amd64
指定镜像的架构(前提是镜像需要支持)
也可以通过Dockerfile
中的 FROM 加入--platform=linux/amd64
,例如FROM --platform=linux/amd64 alpine:edge
-
使用
muslcc
musl中有各个平台的编译环境
-
如果要使用
gnu glibc
,建议使用ubuntu
编译,ubuntu
也支持各个架构
Docker环境参考:gcc docker 编译环境
cmake gcc静态链接运行时
cmake_minimum_required(VERSION 3.0)
project(myproject)
add_executable(myexe main.cpp)
target_include_directories(myexe PRIVATE include)
target_compile_features(myexe PUBLIC cxx_std_11)
target_link_libraries(myexe PRIVATE -static-libgcc -static-libstdc++ -static)
在这个示例中,-static-libgcc
和-static-libstdc++
选项用于将GCC和C++运行时库静态链接,-static
选项用于指定静态链接方式。这样,在编译可执行文件时,就会将运行时库静态链接到可执行文件中,从而避免在目标环境中需要安装运行时库的问题。
target_link_libraries(${PROJECT_NAME} PUBLIC -static-libgcc -static-libstdc++ -static)