问题标签 [libc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 我需要来自 glibc 的异步信号安全函数列表
非系统调用的包装器,但类似于 snprintf()、dprintf()
c - 将共享库重新链接到不同版本的 libc
我有一个使用特定版本的 libc (GLIBC2.4) 编译的 linux 共享库 (.so),我需要在具有不同版本的 libc 的系统上使用它。我没有相关库的源代码,因此无法为新系统重新编译。是否有可能将该库中的依赖项更改为不同的 libc?
javascript - 使用 JNA、Rhino、JavaScript 分配 char 缓冲区
在 Narwhal 中,我们使用 JNA 来libc
调用getcwd
和chdir
. 我只能在对 JNA 接口了解有限的情况下使用它,因为它与 Rhino 中的 JavaScript 相关,专门处理原语。我需要知道如何分配一个 char 缓冲区,以便我可以将它传递给getcwd
,从该缓冲区中检索一个 JavaScript 字符串,并取消分配缓冲区,大概是在一个finally
子句中。
下面是我们如何抓取libc
界面:
下面是如何chdir
实现的:
这是我们需要解决方案的地方getcwd
Ruby 或任何其他 JNA 嵌入式语言的解决方案会有所帮助。
qt - 使用 qtconcurrent 生成异常并调用 QTime:currentTime
我似乎只使用使用 Qtconcurrent::run 创建的线程生成异常
我有一个名为 FPSengine 的类,它有一个名为 FPSengine::getData() 的方法,该方法由主线程和 3 个其他线程(2 个 QThreads 和 1 个使用 QtConcurrent::run())调用。在 FPSengine::getData() 内部,我调用 QTime::currentTime()。如果我从主线程或 QThreads 之一调用 FPSengine::getData() 我没有任何问题,但是当我从使用 Qtconcurrent::run() 创建的线程调用 FPSengine::getData() 时,有时会出现异常。Qtconcurrent 或 QTime:currentTime() 甚至 tzset (由 gdb 堆栈显示的 QTime::currentTime 调用)是否有问题?还是我的代码有问题。这是失败线程的堆栈信息:
0 raise /lib/libc.so.6 0
1 abort /lib/libc.so.6 0
2 ?? /lib/libc.so.6 0
3?? /lib/libc.so.6 0
4 免费 /lib/libc.so.6 0
5 ?? /lib/libc.so.6 0
6 tzset /lib/libc.so.6 0
7 QTime::currentTime() /usr/lib/libQtCore.so.4 0
8 FPSengine::xmitData FPSengine2.cpp 93
9 FPSengine: :getData FPSengine2.cpp 21
10 线程数据日志::运行线程数据日志.cpp 109
11 ?? /usr/lib/libQtCore.so.4 0
12 start_thread /lib/libpthread.so.0 0
13 克隆 /lib/libc.so.6 0 14 ?? 0
android - Android libc版本和malloc实现
Android平台使用什么libc实现?使用什么 malloc 实现(ptmalloc 或 tcmalloc 或其他)?
android - 仿生(android libc)互斥体变体
仿生 libc 支持哪些类型的互斥锁?
- 递归的
- 定时的
- 自适应
- 错误检查
visual-c++ - 运行时库不匹配和 VC++ - 哦,痛苦!
似乎我整个成年生活都被 VC++ 链接器抱怨或犹豫所折磨,因为各种库不同意使用哪个版本的运行时库。我从来没有心情去掌握那个令人沮丧的主题。所以我只是试着弄乱它,直到它起作用。错误消息永远不会有用。微软关于这个主题的文档也不是——至少对我来说不是。
有时它找不到函数 - 因为名称修改不是预期的?有时它拒绝混搭。有时它只是说,“链接:警告 LNK4098:defaultlib 'LIBCMTD' 与使用其他库发生冲突;使用 /NODEFAULTLIB:library” 使用 /NODEFAULTLIB 不起作用,但警告似乎是良性的。到底什么是“DEFAULTLIB”?链接器如何决定?我从来没有见过一种方法来指定链接器使用哪个运行时库,只有如何告诉编译器为哪个库创建函数调用。
有“dependency walker”程序可以检查目标文件以查看它们所依赖的DLL。我刚刚在我正在尝试构建的项目上运行了一个,这真是一团糟。有些系统 .libs 和 .dll 需要冲突的运行时版本。例如,COMCTL32.DLL 想要 MSVCRT.DLL,但我链接的是 MSVCRTD.DLL。我正在搜索是否有 COMCTL32D.DLL,即使在我键入时也是如此。
所以我想我要的是一个关于如何整理这些东西的教程。你做什么,你是怎么做的?
这就是我想我知道的。如果有任何错误,请纠正我。
参数为调试/发布、多线程/单线程和静态/DLL。仅涵盖八种可能组合中的六种。没有单线程 DLL,无论是 Debug 还是 Release。
这些设置只影响链接到哪个运行时库(以及与之链接的调用约定)。例如,如果您正在构建 DLL,则不必使用基于 DLL 的运行时,也不必在构建程序的 Debug 版本时使用 Debug 版本的运行时,尽管在单跳过系统调用。
额外的问题:任何人或任何公司怎么会造成这样的混乱?
c - 比 x86_64/linux 上的 glibc 更快的数学库?
是否有更快的 x86_64-linux 的 glibc 的 libm(和头文件?)替代品?
linux - 除 __stack_chk_guard 之外,libc 在哪些平台上存储堆栈 cookie 值?
例如,Linux/i386 上的 glibc 将 cookie 存储在%gs:0x14
. 除了符号之外,我还需要在其他平台上__stack_chk_guard
寻找 cookie 吗?
(这是生成的gcc -fstack-protector
代码在函数序言中存储到堆栈中的值,并在返回之前检查以防止堆栈粉碎)。
c - 不使用 libc 编译
我想在没有 (g)libc 的情况下编译我的 C 代码。如何停用它以及哪些功能取决于它?
我试过 -nostdlib 但它没有帮助:代码可编译并运行,但我仍然可以在可执行文件的 hexdump 中找到 libc 的名称。