我想跨編譯一個web服務器(Monkey-Server)。我的主機環境是Ubuntu 64位,目標環境是一個arm架構。所有依賴關係都可以在文件夾中找到。還有一個選項可以進行安裝,但我認爲在本地將其構建在主機上將文件夾轉移到嵌入式系統是一個明智之舉。我能夠成功編譯並在目標系統上運行Web服務器,但它抱怨說它無法找到配置文件。 Web服務器在主機上編譯的路徑中查找配置文件。如何讓程序認爲它是在交叉編譯時使用cmake在不同目錄下構建的?
例子:它試圖打開,只有主機
ERROR: Cannot find/open /home/username/src/camera_root/monkey-server/conf/
上存在的文件夾,但它實際上應該在
/monkey-server/conf/
尋找配置文件這是我的工具鏈文件看起來像
Set(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_C_COMPILER /home/username/src/compilerdir/arm-hisiv300-linux-uclibcgnueabi-gcc)
#SET(CMAKE_SYSROOT /home/username/src/camera_root)
#SET(CMAKE_FIND_ROOT_PATH /home/username/src/camera_root)
正如你可以在我的工具鏈文件的底部看到我試圖設置博th sysroot和find_root_path沒有運氣。
當我嘗試SET(CMAKE_SYSROOT/home/username/src/camera_root)行時,我無法編譯,因爲C編譯器無法編譯一個簡單的測試程序。
如何幫助Web服務器找到它自己的配置文件?
這裏是到CMakeList.txt是什麼樣子,是否可以幫助一個鏈接: https://paste.ofcode.org/KMWyk3ZpB93LdhURZAcn2G
要加載哪個配置文件不應該是您在構建時需要決定的。只要弄清楚如何在啓動程序時將正確的路徑作爲參數傳遞。大多數程序都支持'--help'選項來告訴你這種使用信息。 –
@JohnZwinck這就是我的想法,但服務器執行的所有I/O操作都是到主機路徑。我可以例如看到日誌目錄的路徑,在配置文件中是錯誤的。我擔心Web服務器無法正常工作,因爲很多路徑不正確。 – Cortex
通常針對非主機目標的交叉編譯包括**安裝**與適用於**目標**機器的* CMAKE_INSTALL_PREFIX *。但是在主機上的'make install'被'make DISTDIR = <...> install'或甚至'cpack'的用法所取代。這適用於在* CMAKE_INSTALL_PREFIX *目錄中自行調整的項目。但是,您的項目似乎會根據源代碼和編譯目錄進行調整(我在其中看不到* CMAKE_INSTALL_PREFIX *用法)。 – Tsyvarev