Date: Mon, 27 Nov 2000 09:45:07 -0700 From: Wes Peters <wes@softweyr.com> To: Andrew Otwell <aotwell@iss.net> Cc: hackers@freebsd.org Subject: Re: porting Linux application to FreeBSD Message-ID: <3A228F93.40812671@softweyr.com> References: <3A228681.4A3DBE88@iss.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Andrew Otwell wrote:
>
> source.c
> -------------------------
> #include <stdio.h>
> int main () {
> printf ("Hello world\n");
> }
> -------------------------
>
> A couple of you answered my first query which gave me....
>
> gcc -nostdinc -I/includedir -nostdlib -L/libdir source.c
>
> This always failed with either....
>
> ld: No reference to __DYNAMIC
> collect2: ld returned 1 exit status
>
> or
>
> /var/tmp/ccdgopIG.o: Undefined symbol `___main' referenced from text segment
> /var/tmp/ccdgopIG.o: Undefined symbol `_printf' referenced from text segment
> /var/tmp/ccdgopIG.o: Undefined symbol `_printf' referenced from text segment
> collect2: ld returned 1 exit status
>
> Depending on whether I specified lib names (ex. -lnet -lpcap -lgcc, etc....)
>
> I finally pulled all my hair out and ran
>
> gcc -nostdinc -I/usr/include -nostdlib -L/usr/lib source.c
> =-= and =-=
> gcc -nostdlib -L/usr/lib source.c
>
> and again I received.....
> /var/tmp/ccdgopIG.o: Undefined symbol `___main' referenced from text segment
> /var/tmp/ccdgopIG.o: Undefined symbol `_printf' referenced from text segment
> /var/tmp/ccdgopIG.o: Undefined symbol `_printf' referenced from text segment
> collect2: ld returned 1 exit status
>
> Can anyone assist with this?
> I need to be able to compile and link a "Hello World" program against a
> proprietary
> lib dir for my project but for starters I have to make sure my anomolies are not
> with the "ld" portion of my build.
>
> Why doesn't "gcc -nostdlib -L/usr/lib source.c" link properly? I even added
> all the .a files with -lnet -lpcap -ledit, so forth.... and it still failed.
Because you told it not to link with the standard libraries. You will have
to provide a library with a printf function, and a C runtime startup function
with at least the functionality of the standard FreeBSD one.
If you are trying to build a completely static image for an embedded system
or something like that, you might want to install a GCC cross-compiler and
binutils. See, for instance, in /usr/ports/devel:
*-rtems-binutils
*-rtems-gcc
etc.
--
"Where am I, and what am I doing in this handbasket?"
Wes Peters Softweyr LLC
wes@softweyr.com http://softweyr.com/
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?3A228F93.40812671>
