ld链接器脚本错误

时间:2010-12-24 13:03:12

标签: linux linker gnu

我目前正在开发的项目使用了一堆与源代码捆绑在一起的动态库。有一个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链接器脚本命令的任何完整引用。

那可能是什么?

2 个答案:

答案 0 :(得分:1)

GNU ld manual

中描述了链接描述文件格式

答案 1 :(得分:1)

我今天自己发现了这个问题,当你在Windows上使用SVN(例如TortoiseSVN)结帐时,Linux符号链接将被转换为文本文件。

然后,在构建过程中,ld正在接收文本文件而不是符号链接,这将导致具体文件。

解决方案:在Linux机器上进行svn checkout。