簡體   English   中英

嘗試使用 boost 文件系統構建:“重定位……創建共享 object 時無法使用;使用 -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)交叉編譯這些東西,但一次讓人頭疼......

您是否考慮過使用Conan重建 Boost? 好處:

  • 構建過程的尖角已經被打磨掉;
  • 您可以通過插入 ARM 交叉編譯器的配置文件輕松進行交叉編譯;
  • 你可以固定你想要的 Boost 版本。
  • 它與 CMake 集成得非常好

我最終退縮並踢球:在 cmake,我

set(BOOST_USE_STATIC_LIBS OFF)

回想起來,這似乎是顯而易見的。

:wq

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM