开发者

Compile C program in Linux with different glibc library

开发者 https://www.devze.com 2023-01-11 10:03 出处:网络
I have a firewall appliance base on linux that have glibc-2.3.4, and have not gcc to compile a program开发者_运维问答 for that.

I have a firewall appliance base on linux that have glibc-2.3.4, and have not gcc to compile a program开发者_运维问答 for that. when I compile a program by another linux machine, error message says:

require glibc.x.x.x

How can I compile a c program in another linux machine for that version of glibc?


Generally you have to use the proper building environment which contains all target libraries with the needed or compatible versions. The difference between libc variants is not only in linked library name itself. For example, required configuration files can differ. Some interfaces can be provided with header-level inline wrappers which mutated between versions. It's generally safe to run a binary with a newer library version, but not with an older one.

But, if you have a development package of the target libc installed additionally to your system, you could build a binary directly with it using -nostdinc and -nostdlib switches (or call a linker explicitly), and specifying required libraries explicitly. The example could be got from gcc -v output. From my system, it's final linker command:

/usr/bin/ld --eh-frame-hdr -V -dynamic-linker /libexec/ld-elf.so.1 \
  -o t /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o \
  -L/usr/lib -L/usr/lib /tmp//ccCb5j33.o -lgcc --as-needed -lgcc_s \
  --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed \
  /usr/lib/crtend.o /usr/lib/crtn.o

Depending on target libc specifics, you should replace some of these instructions to another ones. Especially, startup (crt1.o and crti.o), cleanup (crtend.o, crtn.o), the libc itself (explicit path instead of -lc) shall be replaced; optionally, the same should meet dynamic linker.

P.S. I see this is too old question but it has been reedited just now:)


The apbuild-apgcc tool sets things up to link against older versions of the glibc symbols.

0

精彩评论

暂无评论...
验证码 换一张
取 消