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>