如何将新的源文件添加到glibc makefile?

时间:2018-11-17 19:32:54

标签: c makefile gnu glibc

最近,我对学习C(malloc模块)的堆管理感兴趣。我想将malloc源文件(例如malloc.c,arena.c)分解成较小的文件,以便为我轻松阅读和学习。我正在使用glibc 2.23,并已按照Wiki上的说明在Ubuntu 14.04上本地(单独的“ build”文件夹中)成功构建了它。

作为我的最初尝试,我将__malloc_assert放入文件massert.hmassert.c中,但随后意识到我不知道如何将它们添加到makefile中,以便进行编译和链接

由于我将__malloc_assertmalloc.c中移出,所以再次运行make时出现链接错误,这是预期的:

/home/mvs/git/glibc/build/libc_pic.os: In function `detach_arena':
/home/mvs/git/glibc/malloc/arena.c:629: undefined reference to `__malloc_assert'
/home/mvs/git/glibc/build/libc_pic.os: In function `mremap_chunk':
/home/mvs/git/glibc/malloc/malloc.c:2832: undefined reference to `__malloc_assert'
/home/mvs/git/glibc/malloc/malloc.c:2813: undefined reference to `__malloc_assert'
/home/mvs/git/glibc/malloc/malloc.c:2812: undefined reference to `__malloc_assert'
/home/mvs/git/glibc/malloc/malloc.c:2830: undefined reference to `__malloc_assert'
/home/mvs/git/glibc/build/libc_pic.os:/home/mvs/git/glibc/malloc/malloc.c:2776: more undefined references to `__malloc_assert' follow

我想我应该看看malloc/malloc.c在makefile文件中是如何使用的,但是我找不到它的使用位置。我主要看以下文件:

  • glibc / Makeconfig
  • glibc / Makefile
  • glibc /规则
  • glibc / malloc / Makefile

或者,我在libc-help mailing list上搜索了makefile并查看了所有结果,但没有找到与我想要的匹配的结果。 "glibc + add new function""Adding a function to glibc?"这两个线程正在谈论向库中添加新函数,这不是我的情况(我不是在添加新函数,而只是重构代码)。

我是makefile系统的新手,并且仍在阅读GNU makefile手册,但是认为在此处拍摄电子邮件可能会使我更快地摆脱困境。

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要在massert中的massert.c变量中添加routines(而不是malloc/Makefile)。

有几个这样的变量:routines用于libc本身,但是libm-routines则用于libm,依此类推。

默认情况下,这些源文件是针对所有变体构建的:静态(.o,共享(.os),性能分析(.op,默认情况下性能分析版本是禁用的)。一些特殊功能仅用于静态构建(.oS,它们进入libc_nonshared.a),并在static-only-routines中列出。可以使用elide-routines.os变量排除特定的构建目标。