我最近遇到了一个问题,我正在寻找一个特定的头文件。我在任何地方都找不到它,直到我在谷歌搜索中偶然发现了它的来源,我才找到了这个网站:
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从这个苹果开源库中分离出来,还是作为一个更大的包的一部分?
谢谢
发布于 2012-07-09 23:47:44
编辑:您的问题在于您依赖于私有的内部数据结构。不提供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安装它们,尽管我经常发现它们不能以这种方式正确构建(你经常不得不从苹果安装很多其他的软件包,这会让人头疼)。如果你需要这样的东西,只需安装“普通”版本并将其静态链接到你的程序中通常要容易得多。
但pcap应该可以很好地工作。您实际看到的问题是什么?
发布于 2012-07-09 23:42:46
它们不一定是“在OSX上使用的”,它们是 MacOS X。MacOS X的核心是达尔文,苹果通过http://opensource.apple.com提供了达尔文的源代码。你可以看看这些项目,看看达尔文是如何工作的。您可以修改它们并构建您自己的Darwin版本。您可以在您自己的项目中使用这些代码,如果您发现它适用的话(受您正在查看的任何组件附带的许可证条款的约束)。
发布于 2012-07-09 23:56:00
OS的发布没有构建组件所需的头文件。普通的10.7OSX甚至没有/usr/include
目录。下载Xcode
是第一步。然后,您需要在Xcode中安装Command Line Tools
选项(Preferences
-> Downloads
-> Components
)来安装头文件,或者需要确保项目的构建系统使用Xcode提供的SDK。如果您不需要Xcode IDE,现在还可以从Apple Developer Connection网站单独下载Xcode4.3的Command Line Tools
组件。
https://stackoverflow.com/questions/11398405
复制相似问题