OpenWrt Forum Archive

Topic: Error while cross-compiling curl library

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

I developed a program that uses curl library, it works fine with my laptop and sends HTTP posts to server . Now I am cross compiling it using SDK for White Russian and when I run the make V=99 in the SDK. It gives Following errors:


/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)
jsonfinal.o: In function `main':
jsonfinal.c:(.text+0xc8): undefined reference to `curl_easy_strerror'
/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

Hi everyone,

I'm bringing up this old post because I run into almost the same problem when trying to cross-compile libreswan with nss-support for OpenWrt.

/home/openwrt/staging_dir/toolchain-i386_gcc-4.6-linaro_uClibc-0.9.33.2/lib/gcc/i486-openwrt/-linux-uclibc/4.6.3/../../../../i486-openwrt/-linux-uclibc/bin/ld: warning: libdl.so.2, needed by /home/openwrt/staging_dir/target-i386_uClibc-0.9.33.2/usr/lib/libnss3.so, not found (try using -rpath or -rpath-link)
/home/openwrt/staging_dir/toolchain-i386_gcc-4.6-linaro_uClibc-0.9.33.2/lib/gcc/i486-openwrt/-linux-uclibc/4.6.3/../../../../i486-openwrt/-linux-uclibc/bin/ld: warning: libc.so.6, needed by /home/openwrt/staging_dir/target-i386_uClibc-0.9.33.2/usr/lib/libnss3.so, not found (try using -rpath or -rpath-link)
/home/openwrt/staging_dir/toolchain-i386_gcc-4.6-linaro_uClibc-0.9.33.2/lib/gcc/i486-openwrt/-linux-uclibc/4.6.3/../../../../i486-openwrt/-linux-uclibc/bin/ld: warning: librt.so.1, needed by /home/openwrt/staging_dir/target-i386_uClibc-0.9.33.2/usr/lib/libnspr4.so, not found (try using -rpath or -rpath-link)
/home/openwrt/staging_dir/target-i386_uClibc-0.9.33.2/usr/lib/libnspr4.so: undefined reference to `sigwait@GLIBC_2.0'
/home/openwrt/staging_dir/target-i386_uClibc-0.9.33.2/usr/lib/libnspr4.so: undefined reference to `gethostbyname2_r@GLIBC_2.1.2'
/home/openwrt/staging_dir/target-i386_uClibc-0.9.33.2/usr/lib/libnspr4.so: undefined reference to `recvfrom@GLIBC_2.0'
/home/openwrt/staging_dir/target-i386_uClibc-0.9.33.2/usr/lib/libnspr4.so: undefined reference to `lseek@GLIBC_2.0'
(...    cut    ...)
/home/openwrt/staging_dir/target-i386_uClibc-0.9.33.2/usr/lib/libnss3.so: undefined reference to `fopen@GLIBC_2.1'
/home/openwrt/staging_dir/target-i386_uClibc-0.9.33.2/usr/lib/libnss3.so: undefined reference to `putchar@GLIBC_2.0'
/home/openwrt/staging_dir/target-i386_uClibc-0.9.33.2/usr/lib/libnss3.so: undefined reference to `fflush@GLIBC_2.0'
collect2: ld returned 1 exit status
../../../programs/pluto/Makefile:445: recipe for target 'pluto' failed
make[6]: *** [pluto] Error 1
make[6]: Leaving directory '/home/openwrt/build_dir/target-i386_uClibc-0.9.33.2/libreswan-3.15/OBJ.linux./programs/pluto'
Makefile:423: recipe for target 'local-base' failed
make[5]: *** [local-base] Error 2
make[5]: Leaving directory '/home/openwrt/build_dir/target-i386_uClibc-0.9.33.2/libreswan-3.15/programs/pluto'
../mk/subdirs.mk:33: recipe for target 'all' failed
make[4]: *** [all] Error 2
make[4]: Leaving directory '/home/openwrt/build_dir/target-i386_uClibc-0.9.33.2/libreswan-3.15/programs'
/home/openwrt/build_dir/target-i386_uClibc-0.9.33.2/libreswan-3.15/mk/subdirs.mk:33: recipe for target 'all' failed
make[3]: *** [all] Error 2
make[3]: Leaving directory '/home/openwrt/build_dir/target-i386_uClibc-0.9.33.2/libreswan-3.15'
Makefile:95: recipe for target '/home/openwrt/build_dir/target-i386_uClibc-0.9.33.2/libreswan-3.15/.built' failed
make[2]: *** [/home/openwrt/build_dir/target-i386_uClibc-0.9.33.2/libreswan-3.15/.built] Error 2
make[2]: Leaving directory '/home/openwrt/feeds/packages/net/libreswan' package/Makefile:105: recipe for target
'package/feeds/packages/libreswan/compile' failed
make[1]: *** [package/feeds/packages/libreswan/compile] Error 2
make[1]: Leaving directory '/home/monkey/attitude_adjustment'
/home/openwrt/include/toplevel.mk:151: recipe for target 'package/feeds/packages/libreswan/compile' failed
make: *** [package/feeds/packages/libreswan/compile] Error 2

Maybe someone can give me a hint what is the problem here.

Thanks in advance!

Looks like libnspr and libnss where not actually cross compiled at all but instead built and linked against your build host system.

The discussion might have continued from here.