![](/img/trans.png)
[英]Why do I get /usr/bin/ld: internal error ../../ld/ldlang.c 4986 when trying to use default linker script obtained with ld --verbose?
[英]ld linker script error
我目前正在開發的項目使用了一堆與源代碼捆綁在一起的動態庫。 有一個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鏈接器腳本命令的任何完整引用。
那可能是什么?
我今天自己發現了這個問題,發生的事情是當您在Windows上使用SVN(例如TortoiseSVN)進行結帳時,Linux符號鏈接被轉換為文本文件。
然后,在構建過程中,ld正在接收文本文件而不是將導致具體文件的符號鏈接。
解決方案:Linux機器上的svn checkout。
GNU ld手冊中描述了鏈接描述文件格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.