2017-09-20 101 views
0

我目前正在嘗試編譯一個項目並將其移植到部署基於Linux的系統的32位目標。從64位Linux交叉編譯特定arm目標的Qt

我的主機運行x86_64 Debian Stretch,我的目標是運行定製Linux的Atmel SAMA5d2。 我的交叉工具鏈是從buildroot生成的。

目前我能夠使用buildroot生成的工具鏈交叉編譯目標應用程序。不過,我想整合Qt併爲目標構建Qt應用程序。

爲了能夠爲目標平臺構建我的應用程序,我需要爲我的目標編譯Qt。 爲此,我必須告訴Qt使用buildroot工具鏈,而不是原生工具鏈。

從我發現我要麼提供-device <device> --device-option CROSS_COMPILE=$TOOLCHAIN_PATH-xplatform <mkspec>來配置預期的工具鏈Qt。

顯然我的目標不在qtbase/mkspecs/devices下的設備列表中,所以我認爲最好的解決方案是爲我的目標創建一個mkspec。

我的命令應該是這樣的:

./configure -xplatform <my_mkspec> -embedded arm -prefix <customQtPath> 

不過我有點失去了,我不知道如何僅從文件和我發現谷歌搜索通過我的問題,做到這一點。
另外我需要指定的目標是32位爲armv7只有32bits?

我很樂意在這方面提供一些幫助。 謝謝。

回答

1

你的假設是正確的。你可以閱讀類似的規格並創建你自己的,這些都很簡單。例如,Pi2是armv7設備,您可以從this qmake.conf開始。然後,通過配置:

-device <given_name> -device-option CROSS_COMPILE=<path_and_prefix> -sysroot <your_sysroot> 

只是改變路徑,如果需要調整cflags等...然後按照建立教程。

+0

我以爲設備必須位於'qtbase/mkspecs/devices'下的列表中,如文檔中所述:_italic_設備通過配置工具的-device參數進行選擇。這個參數後面的名字必須至少部分地匹配devices._italic_ 下的一個子目錄。那麼我應該在這個位置創建規範嗎?另外,我在哪裏可以找到有關所有這些qmake變量的含義和用法的文檔? – Arkaik

+0

是的,把你放在那裏。有一個qmake手冊,但大多數沒有記錄。閱讀其他芯片的規格和實驗。 –

+0

謝謝,我會嘗試一下,然後回來告訴你我是否成功了,但是可能需要一段時間,因爲我有修改要在buildroot中添加Qt。 – Arkaik