这个-static选项是个大杀器,指定了这个选项,gcc在连接时对项目所有的依赖库都尝试去搜索名为lib<name>.a的静态库文件,完成静态连接,如果找不到就报错了。这里指的所有是不仅指我们常用的第三方库比如jpeg,png,opencv,zlib,...,还包括gcc编译器自带的库libgcc,libstdc++,libc,libm...,总之就是linux kernal之外...
1.静态编译 将libc和libstdc++静态编译,编译时带上如下参数。 g++ -static-libgcc -static-libstdc++ glibc并不推荐静态链接,你依赖的其他库可能依赖的了glibc,并且往往是动态链接的,可以通过nm <bin> | grep GLIBC_确定你的程序是否依赖了glibc。 2.容器发布 使用携带gcc9.3.0环境的容器发布程序,是可以的。但是...
加入库的名称是libmylib.a,则gcc -l mylib,即去头去尾。 --static 组织在链接时使用动态库 --shared 生成动态库 --static-libgcc 链接静态libgcc库 --shared-libgcc 链接动态libgcc库 可见对动态库和静态库的使用方法是一样的,同一个库如果同时存在动态库和静态库,优先链接动态库,除非使用--static强制使用静...
-static:指定生成静态链接库。 -fPIC:表示编译为位置独立的代码,用于编译共享库。目标文件需要创建成...
-static-libgcc 在提供以下功能的系统上libgcc作为共享库,这些选项分别强制使用动态版本或静态版本。如果没有共享版本libgcc是在配置编译器时生成的,这些选项无效。 -static-libasan 当-fsanitize=address选项用于链接程序,GCC驱动程序自动链接libasan。如果libasan可以作为动态库使用,并且-static选项未使用,则此链接指向的...
-static :使用静态链接。 --help :显示帮助信息。 --version :显示编译器版本信息。 示例 阶段编译 假设有文件 hello.c,内容如下: #include <stdio.h> int main(void) { printf("Hello, GetIoT\n"); return 0; } 编译hello.c,默认输出 a.out gcc hello.c 编译hello.c 并指定输出文件为 hello...
-shared-libgcc 该选项指定使用共享版本的libgcc,在没有共享版本的libgcc的机器上该选项无效 -static-libgcc -specs=<filename> gcc驱动程序读取该文件以确定哪些选项应该传递给那些子进程。 该选项可以通过指定配置文件来覆盖默认配置,指定的文件将在默认配置文件读取后进行处理以修改默认配置。
dlib -pie -rdynamic -s -static -static-libgcc -shared -shared-libgcc -symbolic -Wl,option -Xlinker option -u symbol 目录选项参数Directory Options -Bprefix -Idir -iquotedir -Ldir -specs=file -I- --sysroot=dir 目标选项参数Target Options ...
再make: export LD_LIBRARY_PATH=/usr/local/mpc-1.0.3/lib:/usr/local/gmp-6.0.0/lib:/usr/local/mpfr-3.1.3/lib:$LD_LIBRARY_PATH 错误2) ../.././libgcc/config/t-softfp:106: 在“else”指令之后含有不该出现的文字 ../.././libgcc/config/t-softfp:113: *** 每个条件只能有一个“else...
checking whether g++ accepts -static-libstdc++ -static-libgcc... no checking for gnatbind... no checking for gnatmake... no checking whether compiler driver understands Ada... no checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2 checking for objdir... ....