1

最近在寻找特定头文件时遇到了问题。直到我在谷歌搜索中偶然发现它的来源时,我才在任何地方找到它,这导致我进入了这个网站:

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 与这个苹果开源库分开,还是作为更大包的一部分?

谢谢

4

3 回答 3

3

编辑:您的问题是您依赖于私有的内部数据结构。pcap-int.h未提供,因为它不是公共 API 的一部分。


大多数库头文件(包括 pcap)在 中可用/usr/include,但通常您从开发人员 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

并非 opensource.apple.com 上的所有内容都可以直接在 SDK 中使用。有些事情是私人的。您可以从 opensource.apple.com 安装它们,尽管我经常发现它们不会以这种方式正确构建(您经常不得不从 Apple 安装许多其他软件包,这会让人头疼)。如果您需要类似的东西,通常只需安装“普通”版本并将其静态链接到您的程序中会容易得多。

但是 pcap 应该可以正常工作。你真正看到了什么问题?

于 2012-07-09T15:47:43.510 回答
1

它们不一定“在 OSX 上使用”,它们MacOS X。MacOS X 的核心是 Darwin,Apple 通过http://opensource.apple.com提供了 Darwin 的源代码。您可以查看这些项目以了解 Darwin 的工作原理。您可以修改它们并构建您自己的 Darwin 版本。如果您发现它适用,您可以在您自己的项目中使用该代码(根据您正在查看的任何组件所附的许可条款)。

于 2012-07-09T15:42:46.247 回答
1

OS X is released without the header files needed to build components. A vanilla 10.7 OS X does not even have a /usr/include directory. Downloading Xcode is the first step. Then you either need to install the Command Line Tools option (Preferences -> Downloads -> Components) within Xcode to install the headers or you need to ensure your project's build system uses the SDKs provided by Xcode. If you don't need the Xcode IDE, you can now also download the Command Line Tools component of Xcode 4.3 separately from the Apple Developer Connection web site.

于 2012-07-09T15:55:59.873 回答