所有问题: [libc]

15 个问题

类似标签:libc++
0
投票
2答案
530 次观看

将混乱与libc链接

我将一个库编译成一个.a文件,并与我的应用程序链接。(iPhone,使用Xcode开发) 一切似乎都很好,链接似乎成功了,但是当我运行程序时,它崩溃了。崩溃的关键点在于静态链接库中的memcmp()调用。调试器会在名称中显示所有用“ dyld”调用的内容,因此似乎由于某种原因它无法解析memcmp,开始寻找动态库,然后失败。 AFAIK memcmp在libc中,因此应该没有问题。(也尝试将-lc传递给链接器,但正如我所料,它没有帮助) 那么它应该如何工作?为什么静态链接库不能使用libc中的任何内容?我应该如何编译? 谢谢

8
投票
6答案
8612 次观看

失败的malloc()的单元测试

涉及失败的malloc()的单元测试代码路径的最佳方法是什么?在大多数情况下,这可能并不重要,因为您正在执行之类的操作 thingy *my_thingy = malloc(sizeof(thingy)); if (my_thingy == NULL) { fprintf(stderr, "We're so screwed!\n"); exit(EXIT_FAILURE); } ,但是在某些情况下,除了死掉以外,您还有其他选择,因为您已经为缓存或其他分配了一些额外的东西,并且可以回收该内存。 但是,在那些您可以尝试从失败的malloc()中恢复的情况下,您在非常不寻...

3
投票
2答案
1055 次观看

在Mac OS X上,如何获取用于源代码级调试的System / LibC调试版本?

我从opensource.apple.com下载了LibC源代码,但是由于它是一个整体库/usr/lib/libSystem.B.dylib的一部分,我必须以某种方式重新构建整个库吗? 我有一个从Linux移植的BSD命令行程序。我希望能够在LibC函数中设置断点并逐步执行。我正在尝试解决程序中似乎是堆损坏的问题(在Linux上不会发生-我已经移植回Linux并在其中运行memcheck。)

3
投票
3答案
2723 次观看

Stdlib Itoa函数

我在互联网上搜索,看到很多使用itoa()函数的代码,他们声称此函数在stdlib.h中。 我正在使用2个版本的GCC: (GCC)4.2.4(Ubuntu 4.2.4-1ubuntu4)) (GCC)4.1.2 20080704(Red Hat 4.1.2-44) 并且它们都没有itoa()函数(我编译程序并报错:对'itoa'的未定义引用)。 有什么想法吗? 谢谢。

2
投票
3答案
791 次观看

用dlsym插入库

我正在编写一个中介库,以跟踪libc中某些库函数的用法,例如open(),close(),connect()等。它在大多数应用程序上通常都能很好地工作。但是,当我使用PHP尝试使用它时,尤其是使用PHP的MySQL模块时,没有跟踪到该模块内部对libc的任何函数调用(因此,没有connect(),socket()等)。“ strace”告诉我,系统调用了socket(),connect()等操作。在模块和libmysqlclient.so.16.0.0上运行'file'表示它们都是动态链接的。因此,它不应该是由静态链接引起的问题。可能是什么问题? 我正在使用Fedora 11 64位版...

18
投票
2答案
6317 次观看

关闭FILE指针而不关闭基础文件描述符

通过使用fdopen()、fileno(),可以使用现有文件描述符打开流。但是,使用流打开文件后,关闭文件的正确方法是将fclose()指针指向FILE。如何关闭流,但保留打开的文件描述符? 此行为类似于先调用fflush()然后再调用fileno(),然后再也不使用FILE指针,除非关闭。另一个需要注意的是,如果再次输入fdopen(),则现在有多个FILE指针,并且只能关闭其中一个。

2
投票
1答案
1175 次观看

MSVC _open/_close/etc

Why are the API's _open, _close, and other standard file i/o functions prefixed with an underscore? Aren't these part of some standard?

6
投票
3答案
2969 次观看

How is linux simultaneously 32bit and 64bit? Or is that something handled in glibc?

How is Linux simultaneously 32bit and 64bit? Or is that something handled in glibc? I run CentOS 5.3 and it is a "64 bit" version; although I build things for 64 bit and 32 bit. From what I think I know, Windows supposedly has a 32bit emulator. Does Linux do the same thing? Is it in userspace or...

9
投票
6答案
6536 次观看

相当于Java中的memcmp()?

如果我有两个byte[]数组,是否有一个内置函数来比较ala C的memcmp()?

8
投票
1答案
9747 次观看

在Android上安装预构建的二进制文件:“未找到”

我正在尝试在自定义Android映像中安装预构建的二进制文件。为此,我已将其复制到prebuilt/android-arm/中的新目录,其中包含与此文件类似的Android.mk文件: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := binary_name LOCAL_MODULE := binary_name LOCAL_MODULE_CLASS := EXECUTABLES include $(BUILD_PREBUILT) 因此,如果我运行make system_image bi...

2
投票
1答案
447 次观看

旧版链接程序(使用libc5)在Linux内核2.6.25上失败

我们有一个使用libc5的旧式链接器,由于一些因素,我们只有二进制文件,而没有源文件。是的,版本控制将使我们免于当前的问题……现在我们的整个工具链和产品线都在使用它,但是这种特殊的方式早已不复存在。 此链接器可在Linux内核2.6.24上运行,但在2.6.25(和2.6.26)上它将失败,并显示消息 虚拟内存超过“新” 相应的旧版编译器也有类似的问题,但是有一些stackoverflow.com 答案并且许多研究发现编译器问题是由linux内核2.6.25中的“ brk随机化”引起的。解决方法是设置sysctl变量和环境变量: / proc / sys /...

13
投票
5答案
5498 次观看

如何判断套接字从哪个接口接收消息?

如果套接字绑定到IN6ADDR_ANY或INADDR_ANY,并且您使用诸如recvfrom()之类的调用在套接字上接收消息。有没有办法找出消息来自哪个接口? 对于IPv6链接范围消息,我希望recvfrom()的from参数会将scope_id字段初始化为接口ID。不幸的是,在我的测试程序中将其设置为0。 有人知道找出这种信息的方法吗?

5
投票
7答案
6815 次观看

是否有一般原因使用open()而不是fopen()?

离开C很长时间后,我正在用C做一个小项目。这些碰巧包括一些文件处理。我在各种文档中注意到,有一些函数返回FILE *句柄,而其他函数则返回(小整数)描述符。两组功能都提供了我所需的相同基本服务,因此,我使用它并不重要。 但是我对收集的智慧感到好奇:使用fopen()和朋友,还是open()和朋友更好? 编辑由于有人提到了缓冲与非缓冲以及访问设备,因此我应该补充一点,这个小项目的一部分将是在FUSE下编写用户空间文件系统驱动程序。因此,文件级别的访问可以像在“文件”(即映像)上一样容易地在设备(例如CDROM或SCSI驱动器)上进行。

96
投票
7答案
26764 次观看

fread / fwrite以大小和数量为参数的基本原理是什么?

我们在这里讨论了为什么fread和fwrite占用每个成员的大小,然后计数并返回读取/写入的成员数,而不仅仅是获取缓冲区和大小。我们能想到的唯一用途是,如果您想读/写一个数组数组,这些数组不能被平台对齐均匀地整除,因此已经被填充了,但是不能如此普遍以至于不能保证这种选择在设计中。 来自 FREAD(3): 函数fread()读取数据的nmemb元素,每个元素长1个字节, 从流指向的流中,将它们存储在给定的位置 通过ptr。 函数fwrite()写入nmemb数据元素,每个大小字节 长,指向流所指向的流,从该位置获取它们 由ptr提供。 fr...

23
投票
4答案
8014 次观看

Windows下的MSVCRT是否像* nix下的glibc(libc)一样?

我经常遇到Windows程序,这些程序与MSVCRT(或它们的最新版本)捆绑在一起,并带有程序可执行文件。在典型的PC上,我会找到相同.DLL的许多副本。我的理解是MSVCRT是C运行时库,有点类似于* nix下的glibc / libc.so。 为什么Windows程序必须带同他们的C库,而不仅仅是共享系统范围的libc? 更新:感谢Shog9,我开始阅读有关SxS的信息,这使我进一步了解了DLL链接问题(DLL地狱)- http://blogs.msdn.com/b/martynl/archive/2005/10/13/480880.aspx 是这个问题的一个有用的介绍...