1. 编译时链接 基本就两个参数,-l 和-L: -l 编译时要链接的库(包括动态链接库.so 和静态链接库.a ),注意库的顺序,被依赖的放在后面。 -L 查询链接库的位置,编译器将依次查找。(/usr/lib 之类的系统位置不用写)。 一个例子: g++ ...-lfolly-lboost_system -L /opt/lib 2. 运行时链接 编译时,...
链接多个库: 如果您需要链接多个库,可以在命令行中添加多个-L和-l选项,或者将多个库文件的路径添加到命令行中。 例如,链接两个动态库: gcc main.c -L/path/to/library1 -lmylibrary1 -L/path/to/library2 -lmylibrary2 -o output_file 复制代码 或者链接一个动态库和一个静态库: gcc main.c -L/pat...
用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdynamic”指定链接共享库,使用示例:-Wl,-Bstatic-lmysqlclient_r -lssl -lcrypto-Wl,-Bdynamic-lrt-Wl,-Bdynamic-pthread-Wl,-Bstatic-lgtest "-Wl"表示是传递给链接器ld的参数,而不是编译器gcc/g++的参数。
GCC链接的时候,一般通过-l来链接动态库和静态库,但是优先动态库的使用。 1. 因此想强制链接某一个静态库的时候,可以直接使用静态库的名字,包括后缀名和前缀,例如libcurl.a,不通过-l来链接 例如:gcc -o static_lib_link -ggdb -O3 -I./include test.cpp libcurl.a 这样子就会把静态库直接链接进来,这个例子...
$ gcc -o main2 main.o -L./ -ladd_minus -L./ 表明库文件位置在当前文件夹 -ladd_minus 表示链接 libadd_minus.a 文件,使用“-l”参数时,前缀“lib”和后缀“.a”是需要省略的。不加链接库,就会报错,未定义函数动态库 动态库和静态库类似,但是它并不在链接时将需要的二进制代码都“拷贝”到可执行...
gcc test.cpp -L. -ltestlib 如果当前目录有两个库libtestlib.so libtestlib.a 则肯定是连接libtestlib.so。如果要指定为连接静态库则使用: gcc test.cpp -L. -static -ltestlib 使用静态库进行连接。 当对动态库与静态库混合连接的时候,使用-static会导致所有的库都使用静态连接的方式。这时需要作用-Wl...
gcc -L<路径-1> 库-1 -L<路径-2> 库-2 ... 但实际上,这样写只是为了更方便理解,其实链接的路径和库文件并没有一一对应关系。也就是说,上面的写法完全可以是这样的: gcc -L<路径-1> -L<路径-2> 库-1 库-2 ... 后来看了一下GCC的官方文档,其实对于这种情况已有清楚说明如下: ...
如链接LuaJIT库,可以用-lluajit-5.1,此时gcc会在库路径中查找libluajit-5.1.so或者libluajit-5.1.a。 也可以用-l llibluajit-5.1.a,第二种只能用在POXIS上,推荐使用第一种方式。而且第二种方式只会在特定的目录进行搜索,会发生找不到库的情况。
编译:需要指定-l选项,链接相应的库;如果要在运行时搜索自己的库文件路径,要用-Wl,rpath选项来指定。 生成动态库命令:gcc -shared -fPIC libfunc.so func.o 例如:有libfunc.so gcc -o test -L./ -lfunc -Wl,rpath=./ 运行时,要将libfunc.so放到test同路径下。(因为-Wl,rpath指定了当前路径) ...
gcc编译优先链接静态库 GCC链接的时候,⼀般通过-l来链接动态库和静态库,但是优先动态库的使⽤。1. 因此想强制链接某⼀个静态库的时候,可以直接使⽤静态库的名字,包括后缀名和前缀,例如libcurl.a,不通过-l来链接例如:gcc -o static_lib_link -ggdb -O3 -I./include test.cpp libcurl.a 这样⼦...