我正在嘗試在此處編譯scotch嵌入 OpenFOAM.org 第三方存盤庫的庫。我運行了命令
make -C ./ThirdParty-dev/scotch_6.0.9/src/
我收到以下錯誤訊息:
(cd libscotch ; make VERSION=6 RELEASE=0 PATCHLEVEL=9 scotch && make install)
制作 \
CC="gcc" \
CCD="gcc" \
蘇格蘭威士忌.h \
蘇格蘭威士忌.h \
libscotch.so \
libscotcherr.so \
libscotcherrexit.so
gcc -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Drestrict=__restrict -DSCOTCH_VERSION_NUM=6 -DSCOTCH_RELEASE_NUM=0 -DSCOTCH_PATCHLEVEL_NUM=9 -dummysizes.c -o-Xlasllmed-e
ld: 未知選項: --no-as-needed
clang:錯誤:聯結器命令失敗,退出代碼為 1(使用 -v 查看呼叫)
make[2]: *** [dummysizes] 錯誤 1
make[1]: *** [scotch] 錯誤 2
制作:*** [libscotch] 錯誤 2
我不確定此錯誤訊息的含義。如果它抱怨scotch不可用,這就是我首先編譯它的原因。無奈之下,我也嘗試通過安裝它brew install scotch無濟于事。如果您能幫助我理解上述錯誤訊息并解決問題,我將不勝感激。
uj5u.com熱心網友回復:
scotch 構建有點不同,因為它們通過src/Makefile.inc用戶負責提供的a 分別管理所有作業系統/編譯器特定的位。當然,它們還在 src/Make.inc/ 目錄中提供了許多示例,但它們可能無法正確涵蓋您特定的作業系統/編譯器要求。
由于您從第三方源而不是原始上游源獲取 scotch 源檔案,因此您還有其他人的src/Makefile.inc恰好是 Linux 特定版本。因此,它具有不正確的鏈接(甚至編譯)選項也就不足為奇了。
openfoam.com 使用的特定于達爾文的 makefile 調整:
# Linux:
LIB = .so
ARFLAGS = $(WM_CFLAGS) -shared -o
LDFLAGS = -Xlinker --no-as-needed $(WM_LDFLAGS) -lm -lrt
# Darwin:
LIB = .dylib
ARFLAGS = $(WM_CFLAGS) -dynamiclib -undefined dynamic_lookup -o
LDFLAGS = $(WM_LDFLAGS) -lm
無需擔心任何其他差異來源(在 OpenFOAMWM_CFLAGS和WM_LDFLAGS變數中),您似乎正在使用 Linux(僅限 gcc?)達爾文鏈接選項 - 所以它們不起作用也就不足為奇了。
uj5u.com熱心網友回復:
原始 scotch 源的位置移動了一點(似乎與它們的檔案管理器有關)但合理的最新參考始終包含在OpenFOAM ThirdParty BUILD.md 中。這些 URL 以鏈接的形式提供,但也列在檔案底部附近以便于 grepping。當前的蘇格蘭鏈接:https : //gforge.inria.fr/frs/download.php/file/38352/scotch_6.1.0.tar.gz
最新的 scotch 實際上是 scotch-6.1.2,但在 dgraph 計算(ptscotch 中的分布式圖)中似乎存在回歸,因此現在最好堅持使用 6.1.0。這是 scotch repo 本身的資訊 ( https://gitlab.inria.fr/scotch/scotch ) - 應該是最可靠的資訊來源。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/386284.html
