OpenWrt Forum Archive

Topic: Having trouble linking when building aprx

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

I'm trying to make either an atheros-2.6 or broadcom mipsel version of the aprx program.

It seems to compile well but fails as follows for both during linking. It seems to be looking for libc not uclibc.
I've searched and cant find anything other than the alias __start isn't found. Any Help or pointers would be appreciated.

It fails as follows:

config.status: WARNING:  Makefile.in seems to ignore the --datarootdir setting
mips-linux-uclibc-ld: warning: cannot find entry symbol __start; defaulting to 0000000000401730
mips-linux-uclibc-ld: warning: cannot find entry symbol __start; defaulting to 00000000004009c0

The Makefile is as follows:

#
# Copyright (C) 2006 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
# $Id: Makefile 1 07/03/2008 18:59:01Z ab8wu $

include $(TOPDIR)/rules.mk

PKG_NAME:=aprx
PKG_VERSION:=0.22
PKG_RELEASE:=svn115

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).$(PKG_RELEASE).tar.gz
PKG_SOURCE_URL:=http://ham.zmailer.org/oh2mqk/aprx
PKG_MD5SUM:=e376bb1c420858b5053584bae00d498d

PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION).$(PKG_RELEASE)
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install

include $(INCLUDE_DIR)/package.mk

define Package/aprx
  SECTION:=net
  CATEGORY:=Network
  TITLE:=APRS RX only I-gate
  URL:=http://ham.zmailer.org/oh2mqk/aprx/
endef

define Package/aprx/description
        This daemon listens for traffic on the specified interfaces.
        It then forwards appropriate packets to APRS-IS servers.
endef

CONFIGURE_ARGS+= \
    --enable-shared \
    --disable-static \

define Build/Compile
    $(MAKE) -C $(PKG_BUILD_DIR) DESTDIR="$(PKG_INSTALL_DIR)" install
endef

define Package/aprx/install
        $(INSTALL_DIR) $(1)/etc
        $(INSTALL_CONF) $(PKG_BUILD_DIR)/aprx.conf $(1)/etc/
        $(INSTALL_DIR) $(1)/usr/sbin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/aprx $(1)/usr/sbin/
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/aprx-stat $(1)/usr/sbin/
endef

$(eval $(call BuildPackage,aprx))

Here is the V=99 output:

make: Entering directory `/opt/accton/packages/net/aprx'
gzip -dc /opt/accton/kamikaze_trunk/dl/aprx-0.22.svn115.tar.gz | /bin/tar -C /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/.. -xf -
touch /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/.prepared_1398f811f6f943d589f20a68016239aa
(cd /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/./; if [ -x ./configure ]; then cp -fpR /opt/accton/kamikaze_trunk/scripts/config.{guess,sub} /opt/ac
cton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115// && AR=mips-linux-uclibc-ar AS="mips-linux-uclibc-gcc -c -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhon
our-copts" LD=mips-linux-uclibc-ld NM=mips-linux-uclibc-nm CC="mips-linux-uclibc-gcc" GCC="mips-linux-uclibc-gcc" CXX=mips-linux-uclibc-g++ RANLIB=mips-linux-uclibc
-ranlib STRIP=mips-linux-uclibc-strip OBJCOPY=mips-linux-uclibc-objcopy OBJDUMP=mips-linux-uclibc-objdump SIZE=mips-linux-uclibc-size CFLAGS="-Os -pipe -mips32 -mtu
ne=mips32 -funit-at-a-time -fhonour-copts " CXXFLAGS="-Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts " CPPFLAGS="-I/opt/accton/kamikaze_trunk/stagi
ng_dir/mips/usr/include -I/opt/accton/kamikaze_trunk/staging_dir/mips/include " LDFLAGS="-L/opt/accton/kamikaze_trunk/staging_dir/toolchain-mips_gcc4.1.2/lib -L/opt
/accton/kamikaze_trunk/staging_dir/mips/usr/lib -L/opt/accton/kamikaze_trunk/staging_dir/mips/lib " PKG_CONFIG_PATH="/opt/accton/kamikaze_trunk/staging_dir/mips/usr
/lib/pkgconfig:/opt/accton/kamikaze_trunk/staging_dir/host/usr/lib/pkgconfig" PKG_CONFIG_LIBDIR="/opt/accton/kamikaze_trunk/staging_dir/mips/usr/lib/pkgconfig"  ./c
onfigure --target=mips-linux --host=mips-linux --build=i486-linux-gnu --program-prefix="" --program-suffix="" --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --s
bindir=/usr/sbin --libexecdir=/usr/lib --sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man --infodir=/usr/info --disable-nls --enable-shar
ed --disable-static  ; fi; )
configure: loading site script /opt/accton/kamikaze_trunk/include/site/mips-linux-uclibc
checking whether make sets $(MAKE)... yes
checking for mips-linux-gcc... mips-linux-uclibc-gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... yes
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether mips-linux-uclibc-gcc accepts -g... yes
checking for mips-linux-uclibc-gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... mips-linux-uclibc-gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking whether mips-linux-uclibc-gcc needs -traditional... no
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking pty.h usability... yes
checking pty.h presence... yes
checking for pty.h... yes
checking for openpty... no
checking for openpty in -lutil... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
touch /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/.configured
make -C /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115 DESTDIR="/opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg-install" install
make[1]: Entering directory `/opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115'
mips-linux-uclibc-gcc -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts  -DAPRXVERSION="\"aprx-0.22.svn115\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var
/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\""  -c aprx.c
mips-linux-uclibc-gcc -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts  -DAPRXVERSION="\"aprx-0.22.svn115\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var
/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\""  -c ttyreader.c
mips-linux-uclibc-gcc -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts  -DAPRXVERSION="\"aprx-0.22.svn115\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var
/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\""  -c ax25.c
mips-linux-uclibc-gcc -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts  -DAPRXVERSION="\"aprx-0.22.svn115\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var
/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\""  -c aprsis.c
mips-linux-uclibc-gcc -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts  -DAPRXVERSION="\"aprx-0.22.svn115\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var
/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\""  -c beacon.c
mips-linux-uclibc-gcc -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts  -DAPRXVERSION="\"aprx-0.22.svn115\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var
/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\""  -c config.c
mips-linux-uclibc-gcc -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts  -DAPRXVERSION="\"aprx-0.22.svn115\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var
/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\""  -c netax25.c
mips-linux-uclibc-gcc -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts  -DAPRXVERSION="\"aprx-0.22.svn115\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var
/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\""  -c erlang.c
mips-linux-uclibc-gcc -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts  -DAPRXVERSION="\"aprx-0.22.svn115\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var
/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\""  -c aprxpolls.c
mips-linux-uclibc-gcc -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts  -DAPRXVERSION="\"aprx-0.22.svn115\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var
/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\""  -c telemetry.c
mips-linux-uclibc-ld -L/opt/accton/kamikaze_trunk/staging_dir/toolchain-mips_gcc4.1.2/lib -L/opt/accton/kamikaze_trunk/staging_dir/mips/usr/lib -L/opt/accton/kamika
ze_trunk/staging_dir/mips/lib  -o aprx aprx.o ttyreader.o ax25.o aprsis.o beacon.o config.o netax25.o erlang.o aprxpolls.o telemetry.o -lutil
mips-linux-uclibc-gcc -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts  -DAPRXVERSION="\"aprx-0.22.svn115\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var
/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\""  -c aprx-stat.c
mips-linux-uclibc-ld -L/opt/accton/kamikaze_trunk/staging_dir/toolchain-mips_gcc4.1.2/lib -L/opt/accton/kamikaze_trunk/staging_dir/mips/usr/lib -L/opt/accton/kamika
ze_trunk/staging_dir/mips/lib  -o aprx-stat erlang.o aprx-stat.o aprxpolls.o -lutil
perl -ne "s{\@DATEVERSION\@}{aprx-0.22.svn115 - 2008 July 03}g; \
                  s{\@VARRUN\@}{/var/run}g;                     \
                  s{\@VARLOG\@}{/var/log/aprx}g;                        \
                  s{\@CFGFILE\@}{/etc/aprx.conf}g;                      \
                  print;"                                       \
         < aprx.8.in > aprx.8
perl -ne "s{\@DATEVERSION\@}{aprx-0.22.svn115 - 2008 July 03}g; \
                  s{\@VARRUN\@}{/var/run}g;                     \
                  s{\@VARLOG\@}{/var/log/aprx}g;                        \
                  s{\@CFGFILE\@}{/etc/aprx.conf}g;                      \
                  print;"                                       \
         < aprx-stat.8.in > aprx-stat.8
perl -ne "s{\@DATEVERSION\@}{aprx-0.22.svn115 - 2008 July 03}g; \
                  s{\@VARRUN\@}{/var/run}g;                     \
                  s{\@VARLOG\@}{/var/log/aprx}g;                        \
                  s{\@CFGFILE\@}{/etc/aprx.conf}g;                      \
                  print;"                                       \
         < aprx.conf.in > aprx.conf
./install-sh  -m 755 aprx /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg-install/usr/sbin/aprx
./install-sh  -m 755 aprx-stat /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg-install/usr/sbin/aprx-stat
./install-sh  -m 644 aprx.8 /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg-install/usr/man/man8/aprx.8
./install-sh  -m 644 aprx-stat.8 /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg-install/usr/man/man8/aprx-stat.8
if [ ! -f  /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg-install/etc/aprx.conf ] ; then \
                ./install-sh  -m 644 aprx.conf /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg-install/etc/aprx.conf ; \
        else true ; fi
make[1]: Leaving directory `/opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115'
touch /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/.built
mkdir -p /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx/CONTROL
echo "Package: aprx" > /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx/CONTROL/control
echo "Version: 0.22-svn115" >> /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx/CONTROL/control
( DEPENDS=''; for depend in ; do DEPENDS=${DEPENDS:+$DEPENDS, }${depend##+}; done; echo "Depends: $DEPENDS"; echo "Provides: "; echo "Source: /opt/accton/packages/n
et/aprx"; echo "Section: net"; echo "Priority: optional"; echo "Maintainer: OpenWrt Developers Team <openwrt-devel@openwrt.org>"; echo "Architecture: mips"; echo -n
 "Description: "; getvar V_Package_aprx_description | sed -e 's,^[[:space:]]*, ,g'; ) >> /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx/CONTRO
L/control
chmod 644 /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx/CONTROL/control
(cd /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx/CONTROL; var2file "V_Package_aprx_conffiles" conffiles; var2file "V_Package_aprx_preinst" p
reinst; var2file "V_Package_aprx_postinst" postinst; var2file "V_Package_aprx_prerm" prerm; var2file "V_Package_aprx_postrm" postrm; )
install -d -m0755 /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx/etc
install -m0600 /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/aprx.conf /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx/etc/
install -d -m0755 /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx/usr/sbin
install -m0755 /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/aprx /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx/usr/sbin/
install -m0755 /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/aprx-stat /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx/usr/sbin/
mkdir -p /opt/accton/kamikaze_trunk/bin/packages/mips
find /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx -name 'CVS' -o -name '.svn' -o -name '.#*' | xargs -r rm -rf
NM="mips-linux-uclibc-nm" STRIP="/opt/accton/kamikaze_trunk/staging_dir/host/bin/sstrip" STRIP_KMOD="mips-linux-uclibc-strip --strip-unneeded --remove-section=.comm
ent" /opt/accton/kamikaze_trunk/scripts/rstrip.sh /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx
rstrip.sh: /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx/usr/sbin/aprx:executable
rstrip.sh: /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx/usr/sbin/aprx-stat:executable
ipkg-build -c -o 0 -g 0 /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx /opt/accton/kamikaze_trunk/bin/packages/mips
Packaged contents of /opt/accton/kamikaze_trunk/build_dir/mips/aprx-0.22.svn115/ipkg/aprx into /opt/accton/kamikaze_trunk/bin/packages/mips/aprx_0.22-svn115_mips.ip
k
make: Leaving directory `/opt/accton/packages/net/aprx'

Problem Solved!

I wasn't calling the right linker--this patch fixes it:

diff -ruN aprx-0.22.svn115.orig/Makefile.in aprx-0.22.svn115/Makefile.in
--- aprx-0.22.svn115.orig/Makefile.in   2008-07-06 17:28:27.000000000 -0400
+++ aprx-0.22.svn115/Makefile.in        2008-07-06 17:29:42.000000000 -0400
@@ -25,7 +25,7 @@
 CFLAGS=                @CFLAGS@ $(DEFS)
 
 # Linker and flags
-LD=            @LD@
+LD=            @CC@
 LDFLAGS=       @LDFLAGS@
 
 INSTALL=       $(srcdir)/install-sh
@@ -75,10 +75,10 @@
 all:           $(PROGAPRX) $(PROGSTAT) man aprx.conf
 
 $(PROGAPRX):   $(OBJSAPRX) VERSION Makefile
-               $(LD) $(LDFLAGS) -o $@ $(OBJSAPRX) $(LIBS)
+               $(CC) $(CFLAGS) -o $@ $(OBJSAPRX) $(LIBS)
 
 $(PROGSTAT):   $(OBJSSTAT) VERSION Makefile
-               $(LD) $(LDFLAGS) -o $@ $(OBJSSTAT) $(LIBS)
+               $(CC) $(CFLAGS) -o $@ $(OBJSSTAT) $(LIBS)
 
 .PHONY:                man
 man:           $(MAN)

I'll make a package patch and open a ticket--but I wanted to leave this here as a clue for others with linking problems.

(Last edited by hopp on 6 Jul 2008, 22:54)

The discussion might have continued from here.