我目前正在开发的项目使用了一堆与源代码捆绑在一起的动态库。有一个lib子集,其名称如下:
对于给定的lib libABC,有四个文件:
libABC.so
libABC.so.4
libABC.so.4.5
libABC.so.4.5.0
它们是菊花链式的:
第一个文件libABC.so包含以下内容:
link libABC.so.4
而下一个文件libABC.so.4包含以下内容:
link libABC.so.4.5
依此类推,直到实际的lib文件libABC.so.4.5.0。
我知道这种东西应该使用符号链接完成,但我们无法改变它,这是一个商业项目。所以链接器就会窒息!
/usr/bin/ld: path/to/the/packaged/libs/libABC.so:unrecognized file format, treating as linker script
(实际上是,嘿)
/usr/bin/ld: path/to/the/packaged/libs/libABC.so:1:syntax error
现在我似乎无法找到有关GNU ld链接器脚本命令“link”的任何信息或对GNU ld链接器脚本命令的任何完整引用。
那可能是什么?
答案 0 :(得分:1)
答案 1 :(得分:1)
我今天自己发现了这个问题,当你在Windows上使用SVN(例如TortoiseSVN)结帐时,Linux符号链接将被转换为文本文件。
然后,在构建过程中,ld正在接收文本文件而不是符号链接,这将导致具体文件。
解决方案:在Linux机器上进行svn checkout。