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.h
或cstring
,并且可能会使用默认目录。如果是这种情况,您绝对应该通知维护者,并确定简单地删除这些文件或包含路径是否是适当的修复。
除此之外,我认为您必须通过他们的网站与软件包维护者取得联系。
祝你好运!
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- 'string'文件在带有C++文件的iOS插件上找不到
- pip install uwsgi 失败,出现 /usr/local/include/string/string.h:7:10:致命错误:找不到'sstream'文件?
- String.find() 在 C++ 中找不到任何内容时不会返回 -1
- YAML::LoadFile(std::string const&) 找不到文件 [ROS 中的 yaml-cpp]
- G++ 找不到 std 标头(iostream、string 等)
- OS X Lion 上的 libplist 编译错误:找不到 string.h
- g++/gcc 找不到名为 String.hpp 的头文件
- 错误 C2679:二进制"<<":找不到采用类型为"std::string"的右侧操作数的运算符
- 错误 C2679:二进制'<<':找不到采用类型为"std::string"的右侧操作数的运算符
- 为什么 string.find( "</a>" ) 找不到"</a>"?
- 二进制'<':找不到 map<std::string shared_ptr 的运算符<Foo>>