![](/img/trans.png)
[英]Linking error: “relocation R_X86_64_32 … can not be used when making a shared object; recompile with -fPIC”
[英]Trying to build with boost filesystem: "relocation … can not be used when making a shared object; recompile with -fPIC"
這是 static 與共享庫的 linux/g++ 版本嗎?
Ubuntu 18.04,提升 1.65,g++ 7.5.0,cmake 3.10.2,GNU make 4.1。 ubuntu 18.04 的默認版本幾乎所有內容,加上可通過 apt-get 獲得的“最新”升級版本。 (順便說一句,是否有適用於更新的 ubuntu 的更新版本,或者 apt 就那么落后?)
我正在嘗試將使用許多不同增強組件(計時、文件系統、proram_ptions、正則表達式、系統、線程、計時器和 unit_test_framework)的軟件移植到 NVidia Jetson TX2 板......它使用上述版本的 ubuntu它既是開發板又是主機。
我現在試圖清除的障礙是鏈接 cmake 中的第一個共享庫: add_library( SHARED...) 在 g++ 中失敗並出現標題錯誤。 “blah blah blah”部分提到了 boost 文件系統中的特定入口點。
我得出結論,我需要使用請求的構建標志重建 boost 文件系統:-fPIC。 令人震驚,我知道。 我似乎記得 boost 在其構建系統方面是它自己獨特的雪花,所以這會很有趣。 至少cmake是我認識的惡魔。
libboost*-dev apt 軟件包是否包含我需要重建的所有內容,還是我需要 go 直接獲取相關版本的源代碼? 我嘗試使用 apt-file 來查看發生了什么...但考慮到有多少不同。c? 和。?? 等等擴展在那里,我什至不確定我正在搜索 boost::filesystem 的文件列表是否正確。
在某些時候,我需要為開發板(arm)而不是主機(amd64)交叉編譯這些東西,但一次讓人頭疼......
我最終退縮並踢球:在 cmake,我
set(BOOST_USE_STATIC_LIBS OFF)
回想起來,這似乎是顯而易見的。
:wq
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.