最近我遇到了一个问题,我正在寻找一个特定的头文件。我无法找到它,直到我在谷歌搜索中偶然发现它来源于我的网站:
http://opensource.apple.com/release/mac-os-x-1068/
我的问题:这些项目应该单独下载,一次一个,在OSX上使用,还是应该已经包含在OSX的一些开发人员包中?我是一个新的OSX用户,我现在知道的是我在盒子上有xcode,但似乎缺少一些我的代码(给我)的库。
以下是我的cmake文件:
project(myproject)
cmake_minimum_required(VERSION 2.8)
SET(CMAKE_BUILD_TYPE debug)
SET(CMAKE_C_FLAGS_DEBUG "-g -fPIC -O0 -pipe -std=c99")
SET(CMAKE_VERBOSE_MAKEFILE TRUE)
file(GLOB HEADER_LIST ./include/*.h)
include_directories(./include)
add_executable(${PROJECT_NAME} ${SRC_LIST} ${HEADER_LIST})
target_link_libraries(${PROJECT_NAME} -lpcap)
我的源文件有
#include <net/bpf.h>
#include <pcap.h>
然而,我试图使用应该在pcap中未定义的结构时遇到一些错误。我应该从这个苹果开源库中单独拉出pcap,还是作为更大包装的一部分?
由于
答案 0 :(得分:3)
编辑:您的问题是您依赖于私有的内部数据结构。未提供pcap-int.h
,因为它不是公共API的一部分。
/usr/include
中提供了大多数库标题(包括pcap),但通常是从开发人员SDK链接它们,以便您可以控制正在构建的特定版本。要使用cmake包含并链接正确的标头和库,通常使用CMAKE_OSX_SYSROOT
变量。您可以使用CMAKE_OSX_DEPLOYMENT_TARGET
控制部署目标。例如,这是我的旧版本:
set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.5.sdk")
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.4)
最新版本的Xcode不再位于/Developer
,因此您需要指向/Applications/Xcode.app
。您可以使用以下方式获取正确的路径:
xcode-select -print-path
并非直接在SDK中提供opensource.apple.com上的所有内容。有些东西是私人的。你可以从opensource.apple.com安装它们,虽然我经常发现它们不能正确地构建那种方式(你经常最终不得不安装Apple的许多其他软件包,这会让人头疼)。如果你需要这样的东西,那么安装“普通”版本并将其静态链接到你的程序中往往要容易得多。
但是pcap应该可以正常工作。你实际看到了什么问题?
答案 1 :(得分:1)
它们不一定“用于OSX”,它们 MacOS X.MacOS X的核心是Darwin,Apple通过{{3}提供Darwin的源代码}。您可以查看这些项目,了解达尔文的工作原理。您可以修改它们并构建自己的Darwin版本。如果您发现它适用,您可以在自己的项目中使用这些代码(根据您正在查看的任何组件所附的许可条款)。
答案 2 :(得分:1)
发布OS X时没有构建组件所需的头文件。 vanilla 10.7 OS X甚至没有/usr/include
目录。下载Xcode
是第一步。然后,您需要在Xcode中安装Command Line Tools
选项(Preferences
- &gt; Downloads
- &gt; Components
)来安装标头,或者您需要确保项目的构建系统使用Xcode提供的SDK。如果您不需要Xcode IDE,您现在也可以从Apple Developer Connection网站单独下载Xcode 4.3的Command Line Tools
组件。