标签: darwin

如何在Darwin下启用大文件支持?

我有一个C应用程序,我正在尝试为Mac OS X 10.6.4编译:

$ uname -v
Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386
Run Code Online (Sandbox Code Playgroud)

我的gcc情况如下:

$ gcc --version
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)
Run Code Online (Sandbox Code Playgroud)

我的Makefile情况如下:

CC=gcc
CFLAGS=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -O3 -Wformat -Wall -pedantic -std=gnu99

all: myApp
    rm -rf *~

myApp: myApp.o
    ${CC} ${CFLAGS} myApp.o -lbz2 -o myApp
    rm -rf *~

clean:
    rm -rf *.o myApp
Run Code Online (Sandbox Code Playgroud)

问题是我的应用程序调用fseeko64fopen64,并使用off64_t类型进行偏移.当我编译我的应用程序时,我收到以下警告和错误:

$ make myApp
gcc -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -O3 -Wformat -Wall -pedantic …
Run Code Online (Sandbox Code Playgroud)

c linux fopen darwin large-file-support

9
推荐指数
2
解决办法
6536
查看次数

如何在OS X 10.5上更新libc和libstdc ++?

我使用Mac Mini作为构建代理,我需要升级标准库.我在MacPorts上找不到libc或libstdc ++.

macos darwin macports libc libstdc++

9
推荐指数
0
解决办法
1827
查看次数

如何在MacOs中真正剥离二进制文件

MacO 10.6,如​​果我有一个文件"unwanted.c",其中包含:

class secret_thing {
public:
secret_thing() {}
void revealing_method_name() {}
};

main()
{
    secret_thing obj;
    obj.revealing_method_name();
}
Run Code Online (Sandbox Code Playgroud)

现在我做:

$ g++ unwanted.c -o unwanted
$ strip unwanted
$ nm unwanted | grep secret
0000000100000eb8 T __ZN12secret_thing21revealing_method_nameEv 
0000000100000eae T __ZN12secret_thingC1Ev
Run Code Online (Sandbox Code Playgroud)

如果我分离出秘密类的接口和实现,就像大多数人在编写C++代码时那样,那么剥离的可执行文件中就没有不需要的符号.可悲的是,我交给了现有数千行代码的代码库,这不是我的选择之一.

我试过-fno-rtti,作为一个疯狂的猜测,并没有解决任何问题.我已经向谷歌众神祈祷并发现许多对脱衣舞俱乐部的引用,但没有任何有用的链接.我已经在mac上浏览了strip,g ++和ld的手册页,并且没有明显的尝试,尽管"私人外部"一词很有趣,我无法弄清楚该怎么做.

[更新]可悲的是,我试图做一个小例子后出现问题.这是一个更复杂的例子,它更接近真正的问题,如果它是经过优化的,它仍然有不需要的符号.

我为坏的例子道歉.事实证明,很难找到最小的实际问题.非常感谢答案,但每个答案都让我接近解决方案.

class base {
public:
    virtual int revealing_method_name() = 0;
    virtual ~base() {};
};

class secret_thing : public base {
public:
    int revealing_method_name() { return 0; };
};

class other_thing : public base {
public:
    int revealing_method_name() …
Run Code Online (Sandbox Code Playgroud)

binary macos executable darwin strip

8
推荐指数
1
解决办法
1万
查看次数

传递编译器标志来增强需要编译的库(如Thread)

所以我知道boost库主要是仅限头文件,但有一些需要编译,例如Boost.Thread.在Darwin中,如何编译这些并传递-m32标志,以便将它们编译成32位(i386)二进制文件?有这个Jamroot的东西,我从来没有听说过,我不知道从哪里开始.

澄清:我不是问如何使用-m32标志编译程序并使用boost库.我问如何使用-m32标志编译Boost库本身.

c++ macos boost darwin

8
推荐指数
1
解决办法
9886
查看次数

如何知道Darwin内核调度程序时间片?

在Linux上,sched.h包含的定义

int sched_rr_get_interval(pid_t pid, struct timespec * tp);

获得流程的时间片.但是,OS X El Capitan附带的文件不符合该定义.

在OS X上有替代方案吗?

c macos posix darwin

7
推荐指数
1
解决办法
873
查看次数

找不到swift darwin文档

我正在玩swift,并有以下简单的代码

在此输入图像描述

我想检查"sqrt"函数是如何实现的,所以我试图点击"Darwin.C.math"链接但没有任何反应.我用谷歌搜索了"斯威夫特达尔文苹果文档",但没有关于"达尔文"的消息.那么有人可以告诉我,我如何找到"sqrt"功能的文档?

在java中,当我单击类名或方法名时,将出现源代码文件,其中包含有关如何实现方法和类的所有详细信息.但我似乎无法对swift/xcode做同样的事情.

darwin sqrt ios swift

7
推荐指数
1
解决办法
1426
查看次数

达尔文/参考手册页缺失

前言:这个问题是关于基本的手册页,这些手册页似乎已经从互联网上消失了。这不是推荐或查找书籍,工具,软件库,教程或其他非现场资源的请求。


Apple删除了所有手册页,或者我只是在它们的新位置(特别是macOS)找不到它们-好像它们只是在方便地将其删除一样。

Mac OS X手册页-Apple Developer

// The page you’re looking for can’t be found.
Run Code Online (Sandbox Code Playgroud)

他们去哪了?在Terminal中,可以通过进行操作man,尽管我正在网上寻找。

macos darwin manpage ios

7
推荐指数
1
解决办法
287
查看次数

将内核移植到不同的架构?

我想将xnu内核移植到ARM架构,最终目标是能够在Qemu中运行完整的内核.虽然我确实意识到这是一项非常艰巨的任务,但我仍然想要了解它.

据我所知,你打算为内核(osfmk/arm/start.s)编写一个入口点,在那里你可以进行一般初始化(MMU和PlatformExpert),之后可以启动Kext/IOKit子系统并加载CPU特定的扩展(即陷阱, GPIO,时钟),它们预先链接到二进制文件或由引导加载程序加载(因为由于NAND扩展尚不可用,内核无法与文件系统交互).

虽然我对ARM CPU如何工作有一个大概的了解,但我甚至不知道从哪里开始使用该xnu端口,因为我不完全确定如何:

  • 进行低级调试(因为内核调试工具在启动期间早期不可用).
  • 将ARM分支与内核源代码树的其余部分集成(即确保内容osfmk/kern正在工作).
  • 为独立于平台的内核创建一个理智的环境来start(machine_startup());
  • 修复主内核代码中的一些特定于平台的代码(大多数平台代码仅限于此,osfmk/platform_name但有些代码必须集成到osfmk/kern其他代码中).

是否有任何关于将XNU(或至少Mach)内核移植到不同平台的指南,就像Linux指南一样?

kernel darwin xnu mach

6
推荐指数
1
解决办法
592
查看次数

如何从x86_64-apple-darwin主机为i386-apple-darwin目标构建交叉编译器?

问题概述

我正在尝试学习如何在gcc针对i386-apple-darwin(32位Intel)的64位Intel OS X主机上构建交叉编译器,特别是GNU 4.7.2 版本.但是,我一直陷入同样的​​错误:

...
checking for i386-apple-darwin-gcc... /Users/alexpreynolds/Developer/third-party/build-gcc/./gcc/xgcc -B/Users/alexpreynolds/Developer/third-party/build-gcc/./gcc/ -B/Users/alexpreynolds/Developer/third-party/i386-apple-gcc/i386-apple-darwin/bin/ -B/Users/alexpreynolds/Developer/third-party/i386-apple-gcc/i386-apple-darwin/lib/ -isystem /Users/alexpreynolds/Developer/third-party/i386-apple-gcc/i386-apple-darwin/include -isystem /Users/alexpreynolds/Developer/third-party/i386-apple-gcc/i386-apple-darwin/sys-include
checking for suffix of object files... configure: error: in `/Users/alexpreynolds/Developer/third-party/build-gcc/i386-apple-darwin/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make[1]: *** [configure-target-libgcc] Error 1
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

构建过程

我首先构建一个GNU binutils目标版本,i386-apple-darwinGNU gcc构建文件夹可以访问它:

$ cd third-party
$ wget http://ftp.gnu.org/gnu/binutils/binutils-2.23.2.tar.bz2
$ tar xjvf binutils-2.23.2.tar.bz2
$ mkdir i386-apple-darwin
$ mkdir …
Run Code Online (Sandbox Code Playgroud)

macos gcc gnu darwin cross-compiling

6
推荐指数
1
解决办法
7904
查看次数

突然收到很多来自 CFNetwork/Darwin 的请求

我在 AWS 控制台中注意到,我们的网站收到的请求比平时多得多。特别是在夜间(欧洲时间)。

在此处输入图片说明

然后我检查了 nginx 日志,现在我知道许多具有不同 IP 地址的设备请求网站的根目录,其中大多数使用用户代理swcd (unknown version) CFNetwork/978.0.7 Darwin/18.7.0。有时其中一个版本不同。

我完全不知道发生了什么,所以我希望有人可以提供帮助。

darwin cfnetwork ios swift

6
推荐指数
2
解决办法
8890
查看次数