GCC生成动态链接库 如果想创建一个动态链接库,可以使用 GCC 的-shared选项。输入文件可以是源文件、汇编文件或者目标文件。 另外还得结合-fPIC选项。-fPIC 选项作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code);这样一来,产生的代码中就没有绝对地址了,全部使用相对地址,所以代码可以被加载器...
-lxxx: 链接xxx库 -shared: 生成共享目标文件,通常用在建立共享库时 -fPIC: 生成位置无关的代码,通常用在建立共享库时 -static: 生成可执行文件时,禁止生成任何共享链接,包括标准库都使用静态链接 -share: 生成可执行文件时,倾向于使用动态链接 -static-libstdc++: 如果没有这个选项,则默认使用libstdc++共享库,...
$ gcc -fPIC -shared func.c -o libfunc.so 从⽬标⽂件⽣成动态链接库:$ gcc -fPIC -c func.c -o func.o $ gcc -shared func.o -o libfunc.so -fPIC 选项作⽤于编译阶段,在⽣成⽬标⽂件时就得使⽤该选项,以⽣成位置⽆关的代码。GCC 将动态链接库链接到可执⾏⽂件 如...
如果目录下同时有static与shared library的话,会以shared为主。 使用-static 参数可以避免使用shared连结。 $ gcc main.c -static -L. -lmylib 此时可以用 ldd 看编译出的执行档与shared链接库的相依性 输出结果显示出该执行文件需要 libmylib.so.1 这个shared library。 会显示 not found 因为没指定该library...
gcc -shared -o libtest.so test.o -I(大写 i) (-Idir 或者 -I dir)添加头文件搜索目录, 这是一个编译选项; 1 2 test.c 包含 test.h, test.h 位于./inc 中 gcc -c test.c -o test.o -I inc -l(小写L) (-llib 或者 -l lib)执行链接时的共享库名称,如当前有一个共享库 libcshare.so...
-shared 该选项指定生成动态连接库 -nostdlib 不连接系统标准启动文件和标准库文件,只把指定的文件传递给连接器。 3、关于警告信息的 -Wall 会打开一些很有用的警告选项,建议编译时加此选项。 -w 禁止显示所有警告信息。 -Wpointer-arith 对函数指针或者void *类型的指针进行算术操作时给出警告。 -Wall 并不会打...
gcc -shared(生成共享库,即so) gcc -Wl,-soname(指定生成共享库的soname) exe相关选项 gcc-fPIE(生成位置无关代码) gcc-Wl,--as-needed(仅链接需要的动态库,有些版本gcc不支持) gcc-rdynamic(通知链接器,把符号导出到dynamicsymbol list中,用于exe符号导出) ...
(1)-shared:生成共享库。 (2)-static:生成静态库。 (3)-nostdlib:不使用标准库。 (4)-nodefaultlibs:不使用默认库。 (5)-Wl:传递参数给链接器。 (6)-rpath:指定运行时库搜索路径。 5. 其他选项 (1)-v:显示编译器版本信息。 (2)-dumpversion:显示编译器版本号。 (3)-dumpmachine:显示编译器目标机器...
编写C源文件share_lib.c,写入需要重复调用的函数,然后使用命令gcc -shared -fPIC -o share_lib.so share_lib.c生成动态库文件share_lib.so 编写C头文件share_lib.h,写入函数的原型声明 ...
-shared 生成共享目标文件。通常用在建立共享库时。 -static 禁止使用共享连接。 -UMACRO 取消对 MACRO 宏的定义。 -w 不生成任何警告信息。 -Wall 生成所有警告信息。 参数详解 -x language filename 设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后 ...