2017-01-03 75 views
1

我想在yocto編譯環境中編譯pyqt 5.7,但出現以下錯誤。pyqt 5.7,無法打開鏈接腳本文件QtCore.exp

/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/6.2.0/ld: cannot open linker script file QtCore.exp: No such file or directory 

這裏是完整的配置/編譯輸出。

https://gist.github.com/anonymous/89cd9131378577f2383d61117389c708

任何想法?

+0

你能夠得到這個工作? – Stephano

+0

我最終修改了配置腳本以刪除對.exp文件的引用。 –

回答

0

看起來你調用GCC時指定一個版本腳本:

--version-script=QtCore.exp 

你可能會缺少此文件(QtCore.exp)和ld抱怨它。

man ld

--version腳本=版本腳本文件

指定版本腳本到連接器的名字。在創建共享庫時,通常使用 來指定有關正在創建的庫的版本層次結構的附加信息 。此 選項僅在支持共享 庫的ELF平臺上得到完全支持;參見VERSION。它在PE平臺上部分支持, 可使用版本腳本過濾 自動導出模式中的符號可見性:版本腳本中標記爲本地的任何符號將不會被導出。

在這種情況下,version-script選項將共享庫版本控制支持添加到Qt。對於這個選項可以做的更有趣的事情,Ulrich Drepper寫了一篇名爲"How To Write Shared Libraries"的大論文。如果您閱讀並理解本文,您將比大多數人瞭解共享庫和管理ABI穩定性。

您可以嘗試刪除此選項,但更好的方法是查找文件(QtCore.exp)的存在位置,生成文件的位置以及更新匹配的路徑。

+1

該選項是由* configure.py *腳本在爲QtCore模塊生成生成文件時自動生成的。它被添加到'QMAKE_LFLAGS'中的* QtCore/QtCore.pro *文件中。 – ekhumoro

+0

@ekhumoro我會假設版本腳本的內容也被創建並保存在某個地方。生成一個需要缺少腳本的配置是很愚蠢的,對嗎? :) – Stephano

+0

嗯,我聽說軟件有可能有錯誤 - 所以誰知道?無論如何,我只是試圖提供你在答案的最後一句中提到的信息。 – ekhumoro