标签:依赖 技术分享 输入 多重 pre 清除 http com int
1、动态库依赖关系
test->hello->world
2、源文件
//world.cpp #include <stdio.h> void world(void) { printf("world.\n"); }
//hello.cpp #include <stdio.h> void world(void); void hello(void) { printf("hello\n"); world(); }
//test.cpp void hello(void); int main(void) { hello(); return 0; }
3、编译
(1)编译word动态库
g++ -shared -fPIC world.cpp -o libworld.so
(2)编译hello动态库
g++ -shared -fPIC hello.cpp -o libhello.so
ldd libhello.so
查看libhello.so的依赖库,没有看到依赖libword.so
g++ -shared -fPIC hello.cpp -o libhello.so -L ./ -lworld
ldd libhello.so
再次查看libhello.so的依赖库,看到了依赖库libword.so
上图显示libworld.so not found,如果临时增加链接动态库的路径,输入如下命令
export LD_LIBRARY_PATH=./
ldd libhello.so
查看libhello.so的依赖库,显示了依赖库libword.so的路径
先清除链接动态库路径
export LD_LIBRARY_PATH=
(3)编译可执行文件test
g++ test.cpp -o a.out -L ./ -lhello
提示找不到libhello.so的依赖库libworld.so,即使编译libhello.so时已经指定了libworld.so,这点和windows不一样
g++ test.cpp -o a.out -L ./ -lhello -lworld -Wl,-rpath ./
编译通过,得到可执行文件a.out,运行成功
标签:依赖 技术分享 输入 多重 pre 清除 http com int
原文地址:https://www.cnblogs.com/justkong/p/9149006.html