我們有一個舊專案,我們通常在虛擬機中在 Linux 上構建。處理這個專案是一件苦差事,因為它目前只在虛擬機中構建和運行。我們還沒有準備好投入必要的資源來用最新的庫重寫專案。但是,我們想在較新的計算機上使用舊庫來構建它。
我們目前正在嘗試在運行 Catalina 10.15.7 的 MacBook Pro 2019 上運行此功能
該專案需要 Wt 3.3.7 我們當前的問題在于嘗試使用 make 編譯 Wt。
以下是我們在嘗試此操作時使用的一些資源。
https://redmine.webtoolkit.eu/projects/wt/wiki/Installing_Wt_on_Mac_OS_X_Yosemite
https://www.webtoolkit.eu/wt/doc/reference/html/InstallationUnix.html
https://github.com/emweb/wt/樹/17c37f2fa9b57b1e2a6e2f412162d3df0192d785
在 wt-3.3.7 專案的 build 目錄中運行 make 時,我們得到以下錯誤:
Linking CXX shared library libwt.dylib ld: warning: could not create compact unwind for __ZN5boost10filesystem6detail5spaceERKNS0_4pathEPNS_6system10error_codeE.cold.111: stack size is large but stack subq instruction not found
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/libwt.3.3.7.dylib] Error 1
make[1]: *** [src/CMakeFiles/wt.dir/all] Error 2
make: *** [all] Error 2
嘗試制作 libwt.3.3.7.dylib 檔案時似乎出現了問題。這個問題似乎也與我們正在使用的 boost 庫有關。(Boost 1.54.0)
我們在makefile 中指定了boost 目錄,也許這沒有正確完成。
在線搜索似乎表明它可能在應該使用 C 時嘗試使用 C 進行編譯。不確定這是否真的是問題所在。
我們嘗試
了“update_dyld_shared_cache”命令
還嘗試
將 CMAKE_LINKER 值更改為 usr/local/bin/g -8
將 CMAKE_CXX_COMPILER 值更改為 usr/local/bin/g -8
將 CMAKE_C_COMPILER 值更改為 usr/local/bin/gcc-8
添加“-std=c 11 -stdlib=libc ” to CMAKE_CXX_FLAGS as per Linking c libraries (for Wt) in Xcode
所有這些都在 CMakeCache.txt
這是指向我們壓縮構建目錄的鏈接,其中包含所有 makefile 等。
https://www.mediafire.com/file/s8d47b7sr0tn06h/build.zip/file
還可能值得一提的是我們的 clang 版本。
Apple clang 版本 11.0.3 (clang-1103.0.32.62)
目標:x86_64-apple-darwin19.6.0
執行緒模型:posix
InstalledDir:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
感謝您提供任何幫助,我們不確定如何解決此問題。
uj5u.com熱心網友回復:
對于任何想知道的人,我得到了編譯。似乎問題來自使用 clang 。
使用正確版本的 Boost 和 MySQL。對我來說那是 Boost 1.54 和 MariaDB。
Boost 1.54 需要一些作業來編譯,確保庫確實存在于下載的存盤庫中,我不得不手動一個一個地下載它們。
這是在 ccmake 界面中完成的。更改 CMAKE_CXX_COMPILER 以使用 GCC c -11 編譯器。
對我來說,它位于 /usr/local/Cellar/gcc/11.3.0/bin/c -11
我使用 Homebrew 安裝了 GCC。
這是在 ccmake 界面中完成的。將以下標志添加到 CMAKE_CXX_FLAGS "-std=c 11 -arch x86_64"
這是在 ccmake 界面中完成的。不確定是否需要,我將 boost 路徑添加到 WtFindBoost-cmake.txt 檔案中。
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "/usr/local/Cellar/boost/1.54.0")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "/usr/local/Cellar/boost/1.54.0/lib")
SET(BOOST_INCLUDEDIR /usr/local/Cellar/boost/1.54.0/include)
SET(BOOST_LIBRARYDIR /usr/local/Cellar/boost/1.54.0/lib)
SET(BOOST_ROOT /usr/local/Cellar/boost/1.54.0)
SET(BOOST_DIR /usr/local/Cellar/boost/1.54.0)
我還強制使用確切的 Boost 版本。
FIND_PACKAGE(Boost 1.54.0
EXACT
COMPONENTS
${Boost_COMPONENTS}
REQUIRED
)
不確定是否需要,我禁用了 ENABLE_LIBWTTEST 和 BUILD_TESTS。
這是在 ccmake 界面中完成的。更改回傳值
include/boost/date_time/local_time/custom_time_zone.hpp
改變
virtual bool has_dst() const
{
return (dst_calc_rules_); //if calc_rule is set the tz has dst
}
到
virtual bool has_dst() const
{
return bool(dst_calc_rules_); //if calc_rule is set the tz has dst
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/476141.html
上一篇:主機/設備的位元組序是什么?
