簡體   English   中英

OS X Lion上libplist的編譯錯誤:未找到string.h

[英]Compilation errors for libplist on OS X Lion: string.h not found

我正在嘗試為OS X編譯Clementine 。在編譯依賴項的過程中,在libplist-1.3期間,出現一個錯誤,提示編譯器無法找到string.h,assert.h等。然后出現了許多錯誤跟隨。

我不確定為什么會這樣。 我在處理較大的C項目方面經驗不是很豐富,並且希望能發現任何導致這種情況發生的方向。 我肯定已經安裝了Xcode命令行工具,並確保它們是最新的。 此外,標准文件位於/usr/include

根據構建說明運行make后的輸出:

cd libplist-1.3/build && PKG_CONFIG_PATH=/Users/dan/projects/sandbox/target/lib/pkgconfig cmake .. -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_INSTALL_PREFIX=/Users/dan/projects/sandbox/target -DQT_HEADERS_DIR=/Users/dan/projects/sandbox/target/include/ -DQT_LIBRARY_DIR=/Users/dan/projects/sandbox/target/bin -DENABLE_PYTHON=OFF
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    QT_HEADERS_DIR
    QT_LIBRARY_DIR


-- Build files have been written to: /Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/build
cd libplist-1.3/build && PATH=/Users/dan/projects/sandbox/target/bin:$PATH make -j2
[ 12%] [ 12%] Building C object src/CMakeFiles/plist.dir/plist.c.o
Building C object src/CMakeFiles/plist.dir/bplist.c.o
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/src/plist.c:23:20: error: string.h: No such file or directory
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/src/plist.c:24:20: error: assert.h: No such file or directory
In file included from /Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/src/plist.h:25,
                 from /Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/src/plist.c:25:
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/include/plist/plist.h:48:20: error: stdint.h: No such file or directory
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/include/plist/plist.h:52:23: error: sys/types.h: No such file or directory
In file included from /Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/src/plist.h:25,
                 from /Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/src/plist.c:25:
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/include/plist/plist.h:128: error: expected ‘)’ before ‘val’
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/include/plist/plist.h:137: error: expected ‘)’ before ‘val’
/Users/dan/projects/sandbox/clementine-dep/macosx/libplist-1.3/include/plist/plist.h:156: error: expected declaration specifiers or ‘...’ before ‘uint64_t’

.. 還有很多

更新:

除去-j2標志時,libplist會成功構建。 現在我遇到了一個新的錯誤:

Scanning dependencies of target libproxy
[ 54%] Building CXX object libproxy/CMakeFiles/libproxy.dir/extension_config.cpp.o
[ 57%] Building CXX object libproxy/CMakeFiles/libproxy.dir/extension_pacrunner.cpp.o
[ 60%] Building CXX object libproxy/CMakeFiles/libproxy.dir/extension_wpad.cpp.o
[ 63%] Building CXX object libproxy/CMakeFiles/libproxy.dir/proxy.cpp.o
/Users/dan/projects/sandbox/clementine-deps/macosx/libproxy-0.4.7/libproxy/proxy.cpp:433:15: error: use of undeclared identifier
      'strdup'; did you mean 'strcmp'?

從評論中部分復制:

嘗試使用make而不是make -j 2編譯。 有時,編譯順序可能會搞砸,而您鏈接到的軟件包站點中明確提到了編譯順序。

至於strdup的問題,該函數在string.h中聲明為C,在cstring為C ++。 如果軟件包構建正確,並且沒有創建重復的標頭,或者嘗試從非標准位置使用標頭,則從完全全新的構建開始可能會解決您的問題。

如果這不起作用,則需要遍歷cmake日志,並在包含路徑中查找目錄,這些目錄中可能包含string.hcstring ,並且可能會代替默認目錄使用。 如果是這種情況,您一定應該通知維護人員,並弄清楚是否僅刪除這些文件或包含路徑是適當的解決方法。

除此之外,我認為您還必須通過他們的網站與軟件包維護者聯系。

祝好運!

暫無
暫無

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

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