2012-11-01 75 views
3

我從codeplex的源代碼編譯了Z3。配置詳情:編譯Z3測試示例給出了構建錯誤

  • 操作系統Debian的5.0(萊尼)
  • GLIBC 2.7
  • GCC 4.4.3
  • OpenMP的4.3.4(包版)

當我嘗試建立我得到的c例子:

../../lib/libz3.so: undefined reference to `std::ctype<char>::_M_widen_init() [email protected]_3.4.11' 

當我嘗試bui ld我得到的C++示例:

../../lib/libz3.so: undefined reference to `[email protected]_3.0' 
../../lib/libz3.so: undefined reference to `[email protected]_3.0' 
../../lib/libz3.so: undefined reference to `[email protected]_3.0' 
../../lib/libz3.so: undefined reference to `[email protected]_3.0'. 

提到的例子是以前從Z3網站下載的。當我構建test_capi示例(源代碼附帶)時,我得到了上述錯誤消息的聯合。

問題的本質是什麼?使用Z3的系統是否有任何先決條件?

在另一個Debian 6.0機器上,一切都很順利。 在此先感謝。

回答

4

我假設你使用官方的src版本或master分支。如果是這樣的話,你可以嘗試在test_capi目錄中編譯test_capi嗎?

gcc -o test_capi -I ../lib test_capi.c -L ../bin/external -lz3 -lstdc++ -lgomp 

在命令上面我們明確地講gcc與C++標準和OMP庫鏈接。 對於C++的例子,你只需要包含-lgomp,因爲默認情況下g ++會與C++標準庫鏈接。您可以使用ldd找到其他失蹤的依賴關係:

ldd ../bin/external/libz3.o 

話雖這麼說,我正在爲Z3一個新的構建系統,您可以通過從CodePlex上獲得unstable分支嘗試。你可以試試嗎?獲得您的反饋意見可以讓這個構建在更多平臺上順利運行,這將是非常好的。

+1

謝謝,旗幟-lstdC++ -lgomp爲我工作!發現的另一個解決方法是從LD_LIBRARY_PATH中排除/ usr/lib - 在運行時似乎不同版本的libstdC++比GCC 4.4.3提供的版本更高,因爲該機器也安裝了較舊的GCC版本。 – Egbert

+0

至於不穩定的分支,構建並不成功。在Lenny上使用的Python是2.5(見http://wiki.debian.org/Python),並且似乎需要更新的版本: [...] 生成的'src/api/dotnet/Enumerations.cs'[ ...] 文件「scripts/update_api.py」,行663 ,但例外情況如前所示:SyntaxError:無效語法 – Egbert

+0

感謝您試用unstable分支。我將嘗試支持Python 2.5。 –