标签: darwin

使用$ non_lazy_ptr进行OSX 10.5 Leopard符号管理

为什么Leopard会使用$ non_lazy_ptr来破坏一些符号?更重要的是,修复未定义的符号错误的最佳方法是什么,因为符号已经被$ non_lazy_ptr修改了?

macos osx-leopard non-lazy-ptr darwin name-mangling

3
推荐指数
1
解决办法
6225
查看次数

Java OS X Dock菜单

是否可以将项目添加到应用程序停靠菜单?

编辑:我想我错过了这个问题,我不是想找到一个方法来添加一个图标到码头.我正在寻找的是,当你右键单击itunes图标时你会在菜单上获得itunes控件(播放暂停等)我想知道如何在该菜单中添加自定义项目.

java macos swing darwin

3
推荐指数
1
解决办法
3102
查看次数

OS X有哪些类型的线程?

内核级线程(如Linux和某些*BSD系统)还是其他什么?如果有任何差异,我正在使用pthreads.

parallel-processing macos multithreading bsd darwin

3
推荐指数
2
解决办法
1603
查看次数

链接静态库时,避免链接未使用的符号

我正在使用apple gcc编译一个我要重新分发的dylib.出于各种原因,我正在使用一些库,让我们说libz保持简单.

由于此库通常不在Mac系统上找到,因此我希望通过将路径传递到简化部署来将已使用符号中的静态链接到dylib中.a-file.

现在,链接器将lib 中的所有符号链接到生成的dylib中,尽管我只引用了一个子集.在linux上我从未遇到过这个问题,链接器很高兴丢弃所有未引用的符号并创建一个非常纤薄的可执行文件,所以它应该是可能的.我现在拥有的dylib文件比它应该大10倍.

我已尝试使用-dead_code链接器标记,但无济于事.也许我只是不明白吗?

有谁知道这个解决方案?

c++ linker darwin

3
推荐指数
1
解决办法
5872
查看次数

为什么我的shell脚本在第二次尝试失败?

此脚本应接受一组搜索字词,并返回格式化的网址以搜索Google.

$ ./google_search.sh albert einstein
https://www.google.com/search?q=albert+einstein
Run Code Online (Sandbox Code Playgroud)

它做得很好,所以我决定添加一个选项来搜索特定网站,或者使用-s-S标记忽略该网站.

$ ./google_search.sh -s wikipedia.org albert einstein
https://www.google.com/search?q=albert+einstein+site%3Awikipedia.org
Run Code Online (Sandbox Code Playgroud)

这在您第一次运行脚本时有效,但在每次后续尝试时都会失败.

$ ./google_search.sh -s wikipedia.org albert einstein
https://www.google.com/search?q=albert+einstein
$ ./google_search.sh -s wikipedia.org albert einstein
https://www.google.com/search?q=albert+einstein
Run Code Online (Sandbox Code Playgroud)

打开新的终端窗口或重新启动终端都可以清除此问题,并在失败前再尝试一次.

剧本:

#!/bin/bash

# original source of concatenate_args function by Tyilo:
# http://stackoverflow.com/questions/9354847/concatenate-inputs-in-bash-script
function concatenate_args
{
    string=""
    ignorenext=0
    for a in "$@" # Loop over arguments
    do
        if [[ "${a:0:1}" != "-" && $ignorenext = 0 ]] # Ignore flags (first character is -)
        then
            if [[ …
Run Code Online (Sandbox Code Playgroud)

bash darwin getopts

3
推荐指数
1
解决办法
186
查看次数

如何使用 sed 在 mac 上更改行 (Darwin)

我不明白 Darwin 与 CentOS 的区别。这不是第一个让我失败的命令。确切的命令在 CentOS 上运行良好,但在 Darwin 上则不然。我阅读了 sed ON MY MBP 的手册页,理论上,它应该可以在 MBP 上工作。

有人能告诉我在 Darwin 上使用 sed 的正确语法是什么吗?完全相同的命令适用于 CentOS 服务器。但是,我运行 sed 所需的所有文件都存储在我的本地开发笔记本电脑(MBP)上。我不想将所有测试文件复制到我们的远程 CentOS 服务器,只是为了运行这个本来应该起作用的愚蠢的 cmd。

这是我尝试在 MBP 上运行的 cmd:

sed -i 's/instance=ge/blah/g' 100usr_defSemaAvail_mult_12hr.jmx
Run Code Online (Sandbox Code Playgroud)

MBP 上的错误说明了这一点

sed: 1: "100usr_defSemaAvail_ ...": invalid command code u
Run Code Online (Sandbox Code Playgroud)

预先感谢您帮助这个沮丧的灵魂。

linux bash sed darwin

2
推荐指数
1
解决办法
1165
查看次数

默认情况下可以在紧急日志中显示调试 KEXT 符号吗?

回到 IOKit 的变化中(El Capitan 带来的 USB 变化似乎非常全面),我发现调试 kext 恐慌日志在后端是一个痛苦的过程。

虽然我在开发和测试,是有可能离开的符号IN的内核扩展,使他们在panic.log回溯打印出来?

对于我的调试 KEXT,我尝试将“Strip Debug Symbols during Copy”设置(aka COPY_PHASE_STRIP)和“Strip Linked Product”(aka STRIP_INSTALLED_PRODUCT)目标设置更改为NO.

我的恐慌日志中仍然有无符号输出。我只是运气不好,MacOS 根本就没有这样做,还是我缺少其他设置?

IE 而不是:

Anonymous UUID:       A8A49864-0847-0BFD-AE70-67EE1BA71682

Fri Dec 18 07:43:19 2015

*** Panic Report ***
panic(cpu 3 caller 0xffffff8013d98fd9): Kernel trap at 0xffffff7f96f00056, type 14=page fault, registers:
CR0: 0x0000000080010033, CR2: 0x0000000000000018, CR3: 0x000000022c105000, CR4: 0x0000000000002660
RAX: 0x00000000c0a8bc01, RBX: 0x0000000000000000, RCX: 0x0000000000000000, RDX: 0x0000000000003dbd
RSP: 0xffffff811dd2b810, RBP: 0xffffff811dd2b8a0, RSI: 0x0000000027a3aee5, RDI: 0x00000000c0a8bc01
R8:  0x0000000000000000, …
Run Code Online (Sandbox Code Playgroud)

macos darwin iokit kernel-extension

2
推荐指数
1
解决办法
907
查看次数

Mac OS X 上的 darwinssl 库位置是什么?

我正在尝试编译 curl 并将其静态链接到另一个项目。我确实设法为我的 mac 架构(x86_64)编译了它并得到了“libcurl.a”。现在,当我尝试构建时:

#include <curl/curl.h>

int main()
{
  CURL *curl = curl_easy_init();
}
Run Code Online (Sandbox Code Playgroud)

使用 g++ tornado.cc -o tornado (path-to-where-it-is)libcurl.a -std=c++11

我得到:

Undefined symbols for architecture x86_64:
  "_CFArrayAppendValue", referenced from:
      _append_cert_to_array in libcurl.a(libcurl_la-darwinssl.o)
  "_CFArrayCreate", referenced from:
      _darwinssl_connect_common in libcurl.a(libcurl_la-darwinssl.o)
  "_CFArrayCreateMutable", referenced from:
      _darwinssl_connect_step2 in libcurl.a(libcurl_la-darwinssl.o)
  "_CFArrayGetCount", referenced from:
      _darwinssl_connect_common in libcurl.a(libcurl_la-darwinssl.o)
  "_CFArrayGetValueAtIndex", referenced from:
      _darwinssl_connect_common in libcurl.a(libcurl_la-darwinssl.o)
  "_CFDataCreate", referenced from:
      _append_cert_to_array in libcurl.a(libcurl_la-darwinssl.o)
Run Code Online (Sandbox Code Playgroud)

据我了解,它想获取 darwinssl 的链接,但我不知道从哪里获取这些链接。

curl 的自述文件(https://github.com/biasedbit/curl-ios-build-scripts/blob/master/README.md) - 确实提到它取决于 libz.dylib 和 Security.framework 但没有提供任何线索关于它们是什么,我何时以及如何需要它们,以及如何包含它们。

PS常规卷曲包含工作正常: g++ tornado.cc …

c++ macos curl darwin

2
推荐指数
1
解决办法
1445
查看次数

pthread_kill 到 GCD 管理的线程

我正在尝试使用 向特定线程发送信号pthread_kill。我用来pthread_from_mach_thread_np()获取句柄,然后用来pthread_kill发送信号。

\n\n

这在我的其他测试中效果很好,但现在我发现当尝试向 GCD 内部创建的线程发出信号时,我从pthread_kill.

\n\n

生成该线程的 GCD API:

\n\n
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), ^{ ... });\n
Run Code Online (Sandbox Code Playgroud)\n\n

发生这种情况有什么原因吗?

\n\n

\xe2\x80\x94-

\n\n

为了添加一些进一步的信息,我并没有试图杀死线程。pthread_kill()是向线程发送信号的标准 POSIX API。如果安装了信号处理程序,则 thread\xe2\x80\x99s 上下文将通过蹦床切换到处理程序。

\n\n

虽然我尝试使用信号处理程序实现的目标可以通过更好的方式实现,但这在这里不是问题。即使纯粹出于学术原因,我也想了解内部发生的情况。

\n

macos pthreads darwin grand-central-dispatch mach

2
推荐指数
1
解决办法
378
查看次数

在 macOS 上的链接时获取 __TEXT 部分的大小

使用gold和其他链接器,可以让链接器.text使用链接器脚本将节的开始/结束作为常量写入二进制文件,例如

PROVIDE_HIDDEN(linker_script_start_of_text = ADDR(.text));
PROVIDE_HIDDEN(linker_script_end_of_text = ADDR(.text) + SIZEOF(.text));
Run Code Online (Sandbox Code Playgroud)

ld -Tmy_linker_script.lds ....

我知道可以调用getectdata或类似方法来获取有关该.text部分的信息或从 mach-o 标头解析它,但是有没有办法让链接器将此数据作为常量插入?

c macos linker mach-o darwin

2
推荐指数
1
解决办法
312
查看次数