Date: Mon, 7 Feb 2000 09:03:06 -0800 (PST) From: John Polstra <jdp@polstra.com> To: marcov@stack.nl Cc: hackers@freebsd.org Subject: Re: how to compile without libc (so not static) Message-ID: <200002071703.JAA70677@vashon.polstra.com> In-Reply-To: <20000204161324.B2DE396D7@toad.stack.nl> References: <20000204161324.B2DE396D7@toad.stack.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
In article <20000204161324.B2DE396D7@toad.stack.nl>,
Marco van de Voort <marcov@stack.nl> wrote:
>
> I finished the syscalls, so now I moved on the initialisation code.
>
> To test that I try to create an empty binary, which doesn't link to libc:
>
> I've put in an hour effort, and wrote the following C file:
>
> int main (void) {
> return 0;
> }
>
> gcc -nostdlib empty.c /usr/lib/crti.o /usr/lib/crt0.o -o empty
>
> results in:
>
> /usr/lib/crt1.o: In function `_start':
> /usr/lib/crt1.o(.text+0x4f): undefined reference to `atexit'
> /usr/lib/crt1.o(.text+0x5c): undefined reference to `atexit'
> /usr/lib/crt1.o(.text+0x6f): undefined reference to `exit'
I suspect that "gcc" isn't the standard FreeBSD C compiler in your
case. Try "which gcc" and find out. It works fine for me on both
-stable and -current with "cc":
blake$ cc -v -nostdlib hello.c
Using builtin specs.
gcc version 2.95.2 19991024 (release)
/usr/libexec/cpp -lang-c -v -D__GNUC__=2 -D__GNUC_MINOR__=95 -Di386 -Dunix -D__FreeBSD__=4 -D__FreeBSD_cc_version=400004 -D__i386__ -D__unix__ -D__FreeBSD__=4 -D__FreeBSD_cc_version=400004 -D__i386 -D__unix -Acpu(i386) -Amachine(i386) -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__ELF__ hello.c /tmp/cciRD216.i
GNU CPP version 2.95.2 19991024 (release) (i386 FreeBSD/ELF)
#include "..." search starts here:
#include <...> search starts here:
/usr/include
/usr/include
End of search list.
The following default directories have been omitted from the search path:
/usr/include/g++
End of omitted list.
/usr/libexec/cc1 /tmp/cciRD216.i -quiet -dumpbase hello.c -version -o /tmp/ccbyU216.s
GNU C version 2.95.2 19991024 (release) (i386-unknown-freebsd) compiled by GNU C version 2.95.2 19991024 (release).
/usr/libexec/elf/as -v -o /tmp/ccWvs216.o /tmp/ccbyU216.s
GNU assembler version 2.9.1 (i386-unknown-freebsdelf), using BFD version 2.9.1
/usr/libexec/elf/ld -m elf_i386 -dynamic-linker /usr/libexec/ld-elf.so.1 -L/usr/libexec/elf -L/usr/libexec -L/usr/lib /tmp/ccWvs216.o
/usr/libexec/elf/ld: warning: cannot find entry symbol _start; defaulting to 08048074
/tmp/ccWvs216.o: In function `main':
/tmp/ccWvs216.o(.text+0xf): undefined reference to `printf'
John
--
John Polstra jdp@polstra.com
John D. Polstra & Co., Inc. Seattle, Washington USA
"Disappointment is a good sign of basic intelligence." -- Chögyam Trungpa
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200002071703.JAA70677>
