- 论坛徽章:
- 11
|
比如: 一个程序a链接了b.so, b.so引用了c.so
当连接a的时候, 能够找到b.so, 但找不到c.so
链接程序就罢工不干了。
我倒是感觉这纯粹是多管闲事了, 因为理论上链接的时候c.so和a没有关系的
我碰到的例子:
zylthinking@zylthinking:/usr/local/src/v3/source/step1/server/vtdu$ make
g++ -o bin/vtduserver VTDUClient.o CSocket.o regtable.o mem_pool.o dev.o stdafx.o -I. -L./bin/so -lpthread -lhcnetsdk
/usr/bin/ld: warning: libm4play.so, needed by ./bin/so/libhcnetsdk.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libstdc++.so.5, needed by ./bin/so/libhcnetsdk.so, may conflict with libstdc++.so.6
./bin/so/libhcnetsdk.so: undefined reference to `Hik_PlayM4_GetCurrentFrameNum'
... ...
collect2: ld 返回 1
make: *** [all] 错误 1
libm4play.so和libhcnetsdk.so放在 ./bin/so文件夹下, vtduserver 要声称在 ./bin 下, 其直接引用了 libhcnetsdk.so, 为了链接时能够找到, 使用了 -L./bin/so, -lhcnetsdk, 但链接硬是通不过, 因为找不到 libm4play.so, 因此 libhcnetsdk.so 内部调用的 Hik_PlayM4_GetCurrentFrameNum 等函数找不到, 但我感觉链接 vtduserver 根本没必要寻找 Hik_PlayM4_GetCurrentFrameNum, 这个应该是在生成 libhcnetsdk.so 时的工作。 |
|