OpenWrt Forum Archive

Topic: Cross compiling a c program using libcurl or curl library

The content of this topic has been archived on 3 Apr 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

Hi, I am using White Russian 0.9 on my linksys WRT54g. I using its corsponding sdk to build package. Till now Helloworld program works fine on router using package build using this SDK. But now when I add cur.h file and libcurl library to sdk. It shows errors related to linking.

it says undefined reference to `getenv@GLIBC_2.0', `strcpy@GLIBC_2.0',strchr@GLIBC_2.0,`inet_addr@GLIBC_2.0' and so on

All these are standard' C library functions. This suggests that the curl library was linked with another C library than the one I am trying to use.

I my sdk the gcc version is 3.4.4 and uclibc ver is 0.9.27. Are they comatible or not.

I am showing the compete error message below::


inovationlab@inovationlab-Vostro-1014:~/smartdetect/OpenWrt-SDK-Linux-i686-1$ make V=99
make package/compile
make[1]: Entering directory `/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1'
make -C package compile SDK=1
make[2]: Entering directory `/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/package'
make -j1 compile-targets
make[3]: Entering directory `/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/package'
make -C jsonfinal compile
Rebuilding /home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/bin/packages/jsonfinal_1_mipsel.ipk
make[4]: Entering directory `/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/package/jsonfinal'
CFLAGS="-Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -I/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/usr/include -I/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/include " LDFLAGS="-L/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/usr/lib -L/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/lib " make -C /home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/build_mipsel/jsonfinal AR=mipsel-linux-uclibc-ar AS="mipsel-linux-uclibc-gcc -c -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time" LD=mipsel-linux-uclibc-ld NM=mipsel-linux-uclibc-nm CC="mipsel-linux-uclibc-gcc" GCC="mipsel-linux-uclibc-gcc" CXX=mipsel-linux-uclibc-g++ RANLIB=mipsel-linux-uclibc-ranlib STRIP=mipsel-linux-uclibc-strip OBJCOPY=mipsel-linux-uclibc-objcopy CROSS="mipsel-linux-uclibc-" CXXFLAGS="-Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -I/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/usr/include -I/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/include " ARCH="mipsel" ;
make[5]: Entering directory `/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/build_mipsel/jsonfinal'
mipsel-linux-uclibc-gcc    jsonfinal.o    -lcurl    -o jsonfinal
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/../../../../mipsel-linux-uclibc/bin/ld: warning: libdl.so.2, needed by /home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so, not found (try using -rpath or -rpath-link)
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/../../../../mipsel-linux-uclibc/bin/ld: warning: libc.so.6, needed by /home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so, not found (try using -rpath or -rpath-link)
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `getenv@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `strcpy@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `strchr@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `inet_addr@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `dlclose@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `strftime@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `__sigsetjmp@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `inet_ntoa@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `strncpy@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `strcmp@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `gethostbyname_r@GLIBC_2.2'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `__strtoul_internal@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `memcmp@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `alarm@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `rand@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `fclose@GLIBC_2.2'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `dlsym@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `tcsetattr@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `sprintf@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `strncmp@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `__rawmemchr@GLIBC_2.2'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `fputc@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `memset@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `stdin@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `sscanf@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `__strdup@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `memcpy@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `__ctype_toupper@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `gethostbyaddr_r@GLIBC_2.2'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `dlopen@GLIBC_2.2'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `__strtok_r@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `__fxstat64@GLIBC_2.2'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `__ctype_tolower@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `time@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `__strtol_internal@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `getpwuid@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `stdout@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `mktime@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `fileno@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `fprintf@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `strstr@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `strlen@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `stderr@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `strcat@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `strrchr@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `__ctype_b@GLIBC_2.0'
/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/../lib/gcc/mipsel-linux-uclibc/3.4.4/libcurl.so: undefined reference to `abort@GLIBC_2.0'
collect2: ld returned 1 exit status
make[5]: *** [jsonfinal] Error 1
make[5]: Leaving directory `/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/build_mipsel/jsonfinal'
make[4]: *** [/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/build_mipsel/jsonfinal/.built] Error 2
make[4]: Leaving directory `/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/package/jsonfinal'
make[3]: *** [jsonfinal-compile] Error 2
make[3]: Leaving directory `/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/package'
make[2]: *** [compile] Error 2
make[2]: Leaving directory `/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1/package'
make[1]: *** [package/compile] Error 2
make[1]: Leaving directory `/home/inovationlab/smartdetect/OpenWrt-SDK-Linux-i686-1'
make: *** [world] Error 2
inovationlab@inovationlab-Vostro-1014:~/smartdetect/OpenWrt-SDK-Linux-i686-1$

before you continue, you should update to a more recent release version.

White Russian was released 2006 (thats >8 years, see here http://en.wikipedia.org/wiki/OpenWrt#Releases ),
there were (many,many,...) fixes and improvements to the code and buildsystem until now!

can you suggest some version on which I can definatly be able to cross-compile programs that uses libcurl library.

The most up-to-date is from the SVN trunk.

The SDK which I get is a stripted down version. So how can I add packages and libraries to my SDK so that it can cross compile Libcurl library.
How can I customize my SDK for Atitude Adjustment to cross compile programs that uses libcurl

(Last edited by patiyal.manish on 23 Apr 2014, 09:54)

If you wanna do any development work with OpenWRT, I strongly suggest you peruse the OpenWRT Documentation. That's a whole lot of information there to satisfy your thirst on questions you may have.

(Last edited by mazilo on 23 Apr 2014, 16:52)

The discussion might have continued from here.