ARM cross-compilation problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello all... sent this a couple of days ago but sent it to the wrong 
email. I have corrected the issue as I state later in the post but have 
yet to perform any runtime tests. If anyone thinks this could cause any 
issues the please let me know.

Hello all,

I am trying to cross-compile the pjproject for an arm target - 
arm-unknown-linux-uclibcgnueabi - but am having some issues.

I have built the toolchain using buildroot and this seems to be working 
for other projects without issue.

I configure the source as follows:
     $ ./configure --host=arm-unknown-linux-uclibcgnueabi

I then run:
     $ make dep

Followed by:
     $ make

During the compilation the build fails as follows:

if test ! -d ../lib; then mkdir -p ../lib; fi
/srv/dataplace/software/development-current/gateway-linux-dev/buildroot/buildroot-2011.08/output/host/usr/bin/arm-unknown-linux-uclibcgnueabi-ar 
../lib/libpj-arm-unknown-linux-uclibcgnueabi.a  
output/pjlib-arm-unknown-linux-uclibcgnueabi/ioqueue_select.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/file_access_unistd.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/file_io_ansi.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/os_core_unix.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/os_error_unix.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/os_time_unix.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/os_timestamp_posix.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/guid_simple.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/addr_resolv_sock.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/log_writer_stdout.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/os_timestamp_common.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/pool_policy_malloc.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/sock_bsd.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/sock_select.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/activesock.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/array.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/config.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/ctype.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/errno.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/except.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/fifobuf.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/guid.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/hash.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/ip_helper_generic.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/list.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/lock.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/log.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/os_time_common.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/os_info.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/pool.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/pool_buf.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/pool_caching.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/pool_dbg.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/rand.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/rbtree.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/sock_common.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/sock_qos_common.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/sock_qos_bsd.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/ssl_sock_common.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/ssl_sock_ossl.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/ssl_sock_dump.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/string.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/timer.o  
output/pjlib-arm-unknown-linux-uclibcgnueabi/types.o
/srv/dataplace/software/development-current/gateway-linux-dev/buildroot/buildroot-2011.08/output/host/usr/bin/arm-unknown-linux-uclibcgnueabi-ar: 
illegal option -- .
Usage: 
/srv/dataplace/software/development-current/gateway-linux-dev/buildroot/buildroot-2011.08/output/host/usr/bin/arm-unknown-linux-uclibcgnueabi-ar 
[emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] 
archive-file file...
        
/srv/dataplace/software/development-current/gateway-linux-dev/buildroot/buildroot-2011.08/output/host/usr/bin/arm-unknown-linux-uclibcgnueabi-ar 
-M [<mri-script]
  commands:
   d            - delete file(s) from the archive
   m[ab]        - move file(s) in the archive
   p            - print file(s) found in the archive
   q[f]         - quick append file(s) to the archive
   r[ab][f][u]  - replace existing or insert new file(s) into the archive
   s            - act as ranlib
   t            - display contents of archive
   x[o]         - extract file(s) from the archive
  command specific modifiers:
   [a]          - put file(s) after [member-name]
   [b]          - put file(s) before [member-name] (same as [i])
   [D]          - use zero for timestamps and uids/gids
   [N]          - use instance [count] of name
   [f]          - truncate inserted file names
   [P]          - use full path names when matching
   [o]          - preserve original dates
   [u]          - only replace files that are newer than current archive 
contents
  generic modifiers:
   [c]          - do not warn if the library had to be created
   [s]          - create an archive index (cf. ranlib)
   [S]          - do not build a symbol table
   [T]          - make a thin archive
   [v]          - be verbose
   [V]          - display the version number
   @<file>      - read options from <file>
  emulation options:
   No emulation specific options
/srv/dataplace/software/development-current/gateway-linux-dev/buildroot/buildroot-2011.08/output/host/usr/bin/arm-unknown-linux-uclibcgnueabi-ar: 
supported targets: elf32-littlearm elf32-bigarm elf32-little elf32-big 
srec symbolsrec verilog tekhex binary ihex
make[2]: *** [../lib/libpj-arm-unknown-linux-uclibcgnueabi.a] Error 1
make[2]: Leaving directory 
`/srv/dataplace/software/development-current/gateway-linux-dev/buildroot/buildroot-2011.08/output/build/pjproject-1.10/pjlib/build'
make[1]: *** [pjlib] Error 2
make[1]: Leaving directory 
`/srv/dataplace/software/development-current/gateway-linux-dev/buildroot/buildroot-2011.08/output/build/pjproject-1.10/pjlib/build'
make: *** [all] Error 1

This error is obviously caused due to not invoking any options with the 
archiver and so I run this command manually with the -cvr options and it 
succeeds. However, when i then issue make again the build fails as follows:

if test ! -d ../bin; then mkdir -p ../bin; fi
/srv/dataplace/software/development-current/gateway-linux-dev/buildroot/buildroot-2011.08/output/host/usr/bin/arm-unknown-linux-uclibcgnueabi-ld 
-o ../bin/pjlib-test-arm-unknown-linux-uclibcgnueabi \
              output/pjlib-test-arm-unknown-linux-uclibcgnueabi/main.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/activesock.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/atomic.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/echo_clt.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/errno.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/exception.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/fifobuf.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/file.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/hash_test.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/ioq_perf.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/ioq_udp.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/ioq_unreg.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/ioq_tcp.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/list.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/mutex.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/os.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/pool.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/pool_perf.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/rand.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/rbtree.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/select.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/sleep.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/sock.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/sock_perf.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/ssl_sock.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/string.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/test.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/thread.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/timer.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/timestamp.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/udp_echo_srv_sync.o  
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/udp_echo_srv_ioqueue.o  output/pjlib-test-arm-unknown-linux-uclibcgnueabi/util.o 
-lm -lnsl -lrt -lpthread  
../lib/libpj-arm-unknown-linux-uclibcgnueabi.a  -lm -lnsl -lrt -lpthread
../lib/libpj-arm-unknown-linux-uclibcgnueabi.a(addr_resolv_sock.o): In 
function `pj_gethostbyname':
addr_resolv_sock.c:(.text+0x314): warning: gethostbyname is obsolescent, 
use getnameinfo() instead.
/srv/dataplace/software/development-current/gateway-linux-dev/buildroot/buildroot-2011.08/output/host/usr/bin/arm-unknown-linux-uclibcgnueabi-ld: 
warning: cannot find entry symbol _start; defaulting to 0000000000009db8
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/ioq_perf.o: In 
function `ioqueue_perf_test_imp':
ioq_perf.c:(.text+0x6e8): undefined reference to `__aeabi_ui2d'
ioq_perf.c:(.text+0x6f4): undefined reference to `__aeabi_dmul'
ioq_perf.c:(.text+0x704): undefined reference to `__aeabi_ui2d'
ioq_perf.c:(.text+0x718): undefined reference to `__aeabi_ddiv'
ioq_perf.c:(.text+0x71c): undefined reference to `__aeabi_d2uiz'
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/ioq_unreg.o: In 
function `perform_unreg_test':
ioq_unreg.c:(.text+0x5d0): undefined reference to `__aeabi_uidiv'
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/pool_perf.o: In 
function `pool_perf_test':
pool_perf.c:(.text+0x394): undefined reference to `__aeabi_uidiv'
pool_perf.c:(.text+0x3a4): undefined reference to `__aeabi_uidiv'
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/rbtree.o: In function 
`randomize_string':
rbtree.c:(.text+0x4c): undefined reference to `__aeabi_idivmod'
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/rbtree.o: In function 
`rbtree_test':
rbtree.c:(.text+0x32c): undefined reference to `__aeabi_uidiv'
rbtree.c:(.text+0x33c): undefined reference to `__aeabi_uidiv'
rbtree.c:(.text+0x34c): undefined reference to `__aeabi_uidiv'
rbtree.c:(.text+0x35c): undefined reference to `__aeabi_uidiv'
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/sleep.o: In function 
`sleep_test':
sleep.c:(.text+0x184): undefined reference to `__aeabi_uidiv'
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/sleep.o:sleep.c:(.text+0x198): 
more undefined references to `__aeabi_uidiv' follow
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/sock_perf.o: In 
function `sock_producer_consumer':
sock_perf.c:(.text+0x210): undefined reference to `__aeabi_ui2d'
sock_perf.c:(.text+0x21c): undefined reference to `__aeabi_dmul'
sock_perf.c:(.text+0x22c): undefined reference to `__aeabi_ui2d'
sock_perf.c:(.text+0x240): undefined reference to `__aeabi_ddiv'
sock_perf.c:(.text+0x244): undefined reference to `__aeabi_d2uiz'
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/string.o: In function 
`string_test':
string.c:(.text+0x5eac): undefined reference to `__aeabi_uidiv'
string.c:(.text+0x5eb8): undefined reference to `__aeabi_uidiv'
string.c:(.text+0x5ec8): undefined reference to `__aeabi_uidivmod'
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/thread.o: In function 
`thread_test':
thread.c:(.text+0x508): undefined reference to `__aeabi_uidiv'
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/timer.o: In function 
`timer_test':
timer.c:(.text+0x12c): undefined reference to `__aeabi_idivmod'
timer.c:(.text+0x224): undefined reference to `__aeabi_uidivmod'
timer.c:(.text+0x318): undefined reference to `__aeabi_uidiv'
timer.c:(.text+0x328): undefined reference to `__aeabi_uidiv'
timer.c:(.text+0x338): undefined reference to `__aeabi_uidiv'
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/timestamp.o: In 
function `timestamp_test':
timestamp.c:(.text+0xd8): undefined reference to `__aeabi_idivmod'
timestamp.c:(.text+0x3cc): undefined reference to `__aeabi_uldivmod'
timestamp.c:(.text+0x404): undefined reference to `__aeabi_uldivmod'
timestamp.c:(.text+0x44c): undefined reference to `__aeabi_uldivmod'
timestamp.c:(.text+0x470): undefined reference to `__aeabi_uldivmod'
timestamp.c:(.text+0x4a4): undefined reference to `__aeabi_uldivmod'
output/pjlib-test-arm-unknown-linux-uclibcgnueabi/udp_echo_srv_sync.o: 
In function `echo_srv_common_loop':
udp_echo_srv_sync.c:(.text+0x64): undefined reference to `__aeabi_i2d'
udp_echo_srv_sync.c:(.text+0xb8): undefined reference to `__aeabi_dsub'
udp_echo_srv_sync.c:(.text+0xc4): undefined reference to `__aeabi_dmul'
udp_echo_srv_sync.c:(.text+0xe0): undefined reference to `__aeabi_ui2d'
udp_echo_srv_sync.c:(.text+0xf4): undefined reference to `__aeabi_ddiv'
udp_echo_srv_sync.c:(.text+0x11c): undefined reference to `__aeabi_dadd'
udp_echo_srv_sync.c:(.text+0x144): undefined reference to `__aeabi_ddiv'
udp_echo_srv_sync.c:(.text+0x148): undefined reference to `__aeabi_d2uiz'
udp_echo_srv_sync.c:(.text+0x164): undefined reference to `__aeabi_ui2d'
udp_echo_srv_sync.c:(.text+0x178): undefined reference to `__aeabi_ddiv'
udp_echo_srv_sync.c:(.text+0x184): undefined reference to `__aeabi_ddiv'
udp_echo_srv_sync.c:(.text+0x188): undefined reference to `__aeabi_d2uiz'
udp_echo_srv_sync.c:(.text+0x1bc): undefined reference to `__aeabi_ddiv'
udp_echo_srv_sync.c:(.text+0x1dc): undefined reference to `__aeabi_dcmpgt'
udp_echo_srv_sync.c:(.text+0x208): undefined reference to `__aeabi_ddiv'
udp_echo_srv_sync.c:(.text+0x20c): undefined reference to `__aeabi_d2uiz'
../lib/libpj-arm-unknown-linux-uclibcgnueabi.a(os_time_unix.o): In 
function `pj_gettimeofday':
os_time_unix.c:(.text+0x4c): undefined reference to `__aeabi_idiv'
../lib/libpj-arm-unknown-linux-uclibcgnueabi.a(os_timestamp_common.o): 
In function `elapsed_msec':
os_timestamp_common.c:(.text+0x3c): undefined reference to `__aeabi_l2d'
os_timestamp_common.c:(.text+0x50): undefined reference to `__aeabi_dcmpeq'
os_timestamp_common.c:(.text+0x70): undefined reference to `__aeabi_l2d'
os_timestamp_common.c:(.text+0x7c): undefined reference to `__aeabi_dmul'
os_timestamp_common.c:(.text+0x88): undefined reference to `__aeabi_ddiv'
../lib/libpj-arm-unknown-linux-uclibcgnueabi.a(os_timestamp_common.o): 
In function `pj_elapsed_time':
os_timestamp_common.c:(.text+0xc0): undefined reference to `__aeabi_dcmpeq'
os_timestamp_common.c:(.text+0x104): undefined reference to `__aeabi_ddiv'
os_timestamp_common.c:(.text+0x108): undefined reference to `__aeabi_d2iz'
os_timestamp_common.c:(.text+0x118): undefined reference to `__aeabi_d2iz'
../lib/libpj-arm-unknown-linux-uclibcgnueabi.a(os_timestamp_common.o): 
In function `pj_elapsed_msec':
os_timestamp_common.c:(.text+0x1a0): undefined reference to `__aeabi_d2uiz'
../lib/libpj-arm-unknown-linux-uclibcgnueabi.a(os_timestamp_common.o): 
In function `pj_elapsed_usec':
os_timestamp_common.c:(.text+0x1d8): undefined reference to `__aeabi_l2d'
os_timestamp_common.c:(.text+0x1ec): undefined reference to 
`__aeabi_dcmpeq'
os_timestamp_common.c:(.text+0x20c): undefined reference to `__aeabi_l2d'
os_timestamp_common.c:(.text+0x218): undefined reference to `__aeabi_dmul'
os_timestamp_common.c:(.text+0x224): undefined reference to `__aeabi_ddiv'
os_timestamp_common.c:(.text+0x228): undefined reference to `__aeabi_d2uiz'
../lib/libpj-arm-unknown-linux-uclibcgnueabi.a(os_timestamp_common.o): 
In function `pj_elapsed_nanosec':
os_timestamp_common.c:(.text+0x264): undefined reference to `__aeabi_l2d'
os_timestamp_common.c:(.text+0x278): undefined reference to 
`__aeabi_dcmpeq'
os_timestamp_common.c:(.text+0x298): undefined reference to `__aeabi_l2d'
os_timestamp_common.c:(.text+0x2a4): undefined reference to `__aeabi_dmul'
os_timestamp_common.c:(.text+0x2b0): undefined reference to `__aeabi_ddiv'
os_timestamp_common.c:(.text+0x2b4): undefined reference to `__aeabi_d2uiz'
../lib/libpj-arm-unknown-linux-uclibcgnueabi.a(pool.o): In function 
`pj_pool_allocate_find':
pool.c:(.text+0x23c): undefined reference to `__aeabi_uidiv'
../lib/libpj-arm-unknown-linux-uclibcgnueabi.a(pool_caching.o): In 
function `cpool_dump_status':
pool_caching.c:(.text+0x2a0): undefined reference to `__aeabi_uidiv'
pool_caching.c:(.text+0x2f8): undefined reference to `__aeabi_uidiv'
../lib/libpj-arm-unknown-linux-uclibcgnueabi.a(string.o): In function 
`pj_utoa_pad':
string.c:(.text+0x194): undefined reference to `__aeabi_uidivmod'
string.c:(.text+0x1a4): undefined reference to `__aeabi_uidiv'
../lib/libpj-arm-unknown-linux-uclibcgnueabi.a(types.o): In function 
`pj_time_val_normalize':
types.c:(.text+0x20): undefined reference to `__aeabi_idiv'
types.c:(.text+0x38): undefined reference to `__aeabi_idivmod'
make[1]: *** [../bin/pjlib-test-arm-unknown-linux-uclibcgnueabi] Error 1
make[1]: Leaving directory 
`/srv/dataplace/software/development-current/gateway-linux-dev/buildroot/buildroot-2011.08/output/build/pjproject-1.10/pjlib/build'
make: *** [pjlib-test] Error 2

Obviously this is a problem with the library I manually created but I am 
not experienced enough to know what I have done wrong... Any ideas would 
be greatly appreciated.

Best regards,

Steven

Eventually got this to compile correctly by setting the following:

export AR+= -rcs
export 
LD=/srv/dataplace/software/development-current/gateway-linux-dev/buildroot/buildroot-2011.08/output/host/usr/bin/arm-unknown-linux-uclibcgnueabi-gcc

If anyone can see any obvious flaw in this procedure then please let me 
know. I will confirm the result of run-time tests later today.

Best regards,


Steven Swann










[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux