How to compile pjsip for ARM

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

 



Hi Tapas,

1. In my previous reply (addressed to the PJSIP mailing list), I maybe
was not very clear. Before anything else, the first step is to rename
your pjproject directory so that it will not have any spaces (e.g.
"pjproject-1.8_ARM" shoud be fine). This is because of a bug in PJSIP
build configuration that I mentioned in the previous email. This bug
about being confused with the  spaces in the path is the reason why
your "make depend" fails.

2. About the failure to detect your tool chain... when you run
"./configure --host=arm-elf-linux" you tell ./configure script that
you want to use arm-elf-linux-gcc, arm-elf-linux-ranlib etc... So
    a) check your tool chain how does it name the gcc and other tool
chain utilities,  and make sure you use this in your --host argument
to ./configure.
    b) make sure the cross compiler tool chain can be found in the $PATH.

   This was the output when you run  ./configure:

      checking for arm-elf-linux-gcc... no
      checking for gcc... gcc
      checking for C compiler default output file name... a.out
      checking whether the C compiler works... yes
      checking whether we are cross compiling... no

   As you see, ./configure script is unable to run arm-elf-linux-gcc.
The above reasons a) (wrong prefix) and b) (cross compilation tools,
gcc and friends, not found in your  $PATH) could explain this. Before
running ./configure, you should be able to run arm-elf-linux-gcc or
(assuming --host=arm-elf-linux) from the command line before
./configure can succeed.

Best regards,

Frans

On Wed, Oct 20, 2010 at 8:11 PM, tapas <tapascst at gmail.com> wrote:
> Hi,
> ???? I need to cross compit pjsip for ARM. Build tutorial (found at :
> http://trac.pjsip.org/repos/wiki/Getting-Started/Autoconf#CrossCompilation )
> suggests to run :
>
>
>
> $ ./configure --host=arm-elf-linux
> $ make dep
> $ make
>
> and then I need to run "sudo make" inside pjproject1.8/pjsip-app/src/python
> directory
>
> But "$ ./configure --host=arm-elf-linux" shows me there is no arm toolchain
> installed in my system. My question is which toolchain should I use and how
> to configure it to crosscompile pjsip.
>
> Please tell me every steps of doing it.
>
> Please know that I compiled it successfully for my 64bit ubuntu. Only cross
> compilation is failing.
>
> Following is the output of "$ ./configure --host=arm-elf-linux" in my
> current system (Ubuntu 64bit):
>
>
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$ ./configure
> --host=arm-elf-linux
> aconfigure: WARNING: If you wanted to set the --build type, don't use
> --host.
>     If a cross compiler is detected then cross compile mode will be used.
>
> checking build system type... x86_64-unknown-linux-gnu
> checking host system type... arm-elf-linux-gnu
> checking target system type... arm-elf-linux-gnu
> checking for arm-elf-linux-gcc... arm-elf-linux-gcc
> checking for C compiler default output file name...
>
> aconfigure: error: C compiler cannot create executables
> See `config.log' for more details.
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$
>
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$
>
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$ ./configure
> --host=arm-elf-linux
> aconfigure: WARNING: If you wanted to set the --build type, don't use
> --host.
>
>     If a cross compiler is detected then cross compile mode will be used.
> checking build system type... x86_64-unknown-linux-gnu
> checking host system type... arm-elf-linux-gnu
> checking target system type... arm-elf-linux-gnu
>
> checking for arm-elf-linux-gcc... no
> checking for gcc... gcc
> checking for C compiler default output file name... a.out
> checking whether the C compiler works... yes
> checking whether we are cross compiling... no
>
> checking for suffix of executables...
> checking for suffix of object files... o
> checking whether we are using the GNU C compiler... yes
> checking whether gcc accepts -g... yes
> checking for gcc option to accept ISO C89... none needed
>
> checking for arm-elf-linux-g++... no
> checking for arm-elf-linux-c++... no
> checking for arm-elf-linux-gpp... no
> checking for arm-elf-linux-aCC... no
> checking for arm-elf-linux-CC... no
> checking for arm-elf-linux-cxx... no
>
> checking for arm-elf-linux-cc++... no
> checking for arm-elf-linux-cl.exe... no
> checking for arm-elf-linux-FCC... no
> checking for arm-elf-linux-KCC... no
> checking for arm-elf-linux-RCC... no
> checking for arm-elf-linux-xlC_r... no
>
> checking for arm-elf-linux-xlC... no
> checking for g++... g++
> checking whether we are using the GNU C++ compiler... yes
> checking whether g++ accepts -g... yes
> checking for pthread_create in -lpthread... yes
>
> checking for puts in -lwsock32... no
> checking for puts in -lws2_32... no
> checking for puts in -lole32... no
> checking for puts in -lwinmm... no
> checking for puts in -lsocket... no
> checking for puts in -lrt... yes
>
> checking for puts in -lnsl... yes
> checking for uuid_generate in -luuid... no
> checking for uuid_generate in -luuid... (cached) no
> Setting PJ_M_NAME to arm
> checking memory alignment... 4 bytes (default)
> checking how to run the C preprocessor... gcc -E
>
> checking for grep that handles long lines and -e... /bin/grep
> checking for egrep... /bin/grep -E
> 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 whether byte ordering is bigendian... no
>
> Checking if floating point is disabled... no
> checking for fmod in -lm... yes
> checking arpa/inet.h usability... yes
> checking arpa/inet.h presence... yes
> checking for arpa/inet.h... yes
> checking assert.h usability... yes
>
> checking assert.h presence... yes
> checking for assert.h... yes
> checking ctype.h usability... yes
> checking ctype.h presence... yes
> checking for ctype.h... yes
> checking errno.h usability... yes
> checking errno.h presence... yes
>
> checking for errno.h... yes
> checking fcntl.h usability... yes
> checking fcntl.h presence... yes
> checking for fcntl.h... yes
> checking linux/socket.h usability... yes
> checking linux/socket.h presence... yes
>
> checking for linux/socket.h... yes
> checking malloc.h usability... yes
> checking malloc.h presence... yes
> checking for malloc.h... yes
> checking netdb.h usability... yes
> checking netdb.h presence... yes
> checking for netdb.h... yes
>
> checking netinet/in_systm.h usability... yes
> checking netinet/in_systm.h presence... yes
> checking for netinet/in_systm.h... yes
> checking netinet/in.h usability... yes
> checking netinet/in.h presence... yes
> checking for netinet/in.h... yes
>
> checking for netinet/ip.h... yes
> checking netinet/tcp.h usability... yes
> checking netinet/tcp.h presence... yes
> checking for netinet/tcp.h... yes
> checking ifaddrs.h usability... yes
> checking ifaddrs.h presence... yes
>
> checking for ifaddrs.h... yes
> checking for getifaddrs... yes
> checking semaphore.h usability... yes
> checking semaphore.h presence... yes
> checking for semaphore.h... yes
> checking setjmp.h usability... yes
>
> checking setjmp.h presence... yes
> checking for setjmp.h... yes
> checking stdarg.h usability... yes
> checking stdarg.h presence... yes
> checking for stdarg.h... yes
> checking stddef.h usability... yes
> checking stddef.h presence... yes
>
> checking for stddef.h... yes
> checking stdio.h usability... yes
> checking stdio.h presence... yes
> checking for stdio.h... yes
> checking for stdint.h... (cached) yes
> checking for stdlib.h... (cached) yes
> checking for string.h... (cached) yes
>
> checking sys/ioctl.h usability... yes
> checking sys/ioctl.h presence... yes
> checking for sys/ioctl.h... yes
> checking sys/select.h usability... yes
> checking sys/select.h presence... yes
> checking for sys/select.h... yes
>
> checking sys/socket.h usability... yes
> checking sys/socket.h presence... yes
> checking for sys/socket.h... yes
> checking sys/time.h usability... yes
> checking sys/time.h presence... yes
> checking for sys/time.h... yes
>
> checking sys/timeb.h usability... yes
> checking sys/timeb.h presence... yes
> checking for sys/timeb.h... yes
> checking for sys/types.h... (cached) yes
> checking sys/filio.h usability... no
> checking sys/filio.h presence... no
>
> checking for sys/filio.h... no
> checking sys/sockio.h usability... no
> checking sys/sockio.h presence... no
> checking for sys/sockio.h... no
> checking time.h usability... yes
> checking time.h presence... yes
>
> checking for time.h... yes
> checking for unistd.h... (cached) yes
> checking winsock.h usability... no
> checking winsock.h presence... no
> checking for winsock.h... no
> checking winsock2.h usability... no
> checking winsock2.h presence... no
>
> checking for winsock2.h... no
> checking for mswsock.h... no
> checking ws2tcpip.h usability... no
> checking ws2tcpip.h presence... no
> checking for ws2tcpip.h... no
> checking uuid/uuid.h usability... no
> checking uuid/uuid.h presence... no
>
> checking for uuid/uuid.h... no
> checking for net/if.h... yes
> Setting PJ_OS_NAME to arm-elf-linux-gnu
> Setting PJ_HAS_ERRNO_VAR to 1
> Setting PJ_HAS_HIGH_RES_TIMER to 1
> Setting PJ_HAS_MALLOC to 1
> Setting PJ_NATIVE_STRING_IS_UNICODE to 0
>
> Setting PJ_ATOMIC_VALUE_TYPE to long
> checking if inet_aton() is available... yes
> checking if inet_pton() is available... yes
> checking if inet_ntop() is available... yes
> checking if getaddrinfo() is available... yes
>
> checking if sockaddr_in has sin_len member... no
> checking if socklen_t is available... yes
> checking if SO_ERROR is available... yes
> checking if pthread_rwlock_t is available... yes
> checking if pthread_mutexattr_settype() is available... no
>
> checking if pthread_mutexattr_t has recursive member... no
> checking ioqueue backend... select()
> checking sys/soundcard.h usability... yes
> checking sys/soundcard.h presence... yes
> checking for sys/soundcard.h... yes
>
> checking linux/soundcard.h usability... yes
> checking linux/soundcard.h presence... yes
> checking for linux/soundcard.h... yes
> checking machine/soundcard.h usability... no
> checking machine/soundcard.h presence... no
>
> checking for machine/soundcard.h... no
> checking alsa/version.h usability... yes
> checking alsa/version.h presence... yes
> checking for alsa/version.h... yes
> Checking sound device backend... unix
> Checking if small filter is disabled... no
>
> Checking if large filter is disabled... no
> Checking if Speex AEC is disabled...no
> Checking if G.711 codec is disabled...no
> Checking if L16 codec is disabled...no
> Checking if GSM codec is disabled...no
> Checking if G.722 codec is disabled...no
>
> Checking if G.722.1 codec is disabled...no
> Checking if Speex codec is disabled...no
> Checking if iLBC codec is disabled...no
> Skipping libsamplerate detection
> Skipping Intel IPP settings (not wanted)
> checking for OpenSSL installations..
>
> checking openssl/ssl.h usability... yes
> checking openssl/ssl.h presence... yes
> checking for openssl/ssl.h... yes
> checking for ERR_load_BIO_strings in -lcrypto... yes
> checking for SSL_library_init in -lssl... yes
>
> OpenSSL library found, SSL support enabled
> checking if select() needs correct nfds... no (default)
> ** Decided that select() doesn't need correct nfds (please check)
> checking if pj_thread_create() should enforce stack size... no (default)
>
> checking if pj_thread_create() should allocate stack... no (default)
> ** Setting non-blocking recv() retval to EAGAIN (please check)
> ** Setting non-blocking connect() retval to EINPROGRESS (please check)
> aconfigure: creating ./config.status
>
> config.status: creating build.mak
> config.status: creating build/os-auto.mak
> config.status: creating build/cc-auto.mak
> config.status: creating pjlib/build/os-auto.mak
> config.status: creating pjlib-util/build/os-auto.mak
>
> config.status: creating pjmedia/build/os-auto.mak
> config.status: creating pjsip/build/os-auto.mak
> config.status: creating third_party/build/os-auto.mak
> config.status: creating third_party/build/portaudio/os-auto.mak
>
> config.status: creating pjlib/include/pj/compat/os_auto.h
> config.status: pjlib/include/pj/compat/os_auto.h is unchanged
> config.status: creating pjlib/include/pj/compat/m_auto.h
> config.status: pjlib/include/pj/compat/m_auto.h is unchanged
>
> config.status: creating pjmedia/include/pjmedia/config_auto.h
> config.status: pjmedia/include/pjmedia/config_auto.h is unchanged
> config.status: creating pjmedia/include/pjmedia-codec/config_auto.h
> config.status: pjmedia/include/pjmedia-codec/config_auto.h is unchanged
>
> config.status: creating pjsip/include/pjsip/sip_autoconf.h
> config.status: pjsip/include/pjsip/sip_autoconf.h is unchanged
>
>
> Configurations for current target have been written to 'build.mak', and
> 'os-auto.mak' in various build directories, and
> pjlib/include/pj/compat/os_auto.h.
>
>
> Further customizations can be put in:
>   - 'user.mak'
>   - 'pjlib/include/pj/config_site.h'
>
> The next step now is to run 'make dep' and 'make'.
>
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$ make dep
>
> for dir in pjlib pjlib-util pjnath third_party pjmedia pjsip pjsip-apps; do
> \
> 		if make  -C $dir/build dep; then \
> 		    true; \
> 		else \
> 		    exit 1; \
> 		fi; \
> 	done
> make[1]: Entering directory `/home/tapas/Downloads/pjproject-1.8
> ARM/pjlib/build'
>
> make[1]: *** /home/tapas/Downloads/pjproject-1.8: Is a directory.  Stop.
> make[1]: Leaving directory `/home/tapas/Downloads/pjproject-1.8
> ARM/pjlib/build'
> make: *** [dep] Error 1
> tapas at test-laptop:~/Downloads/pjproject-1.8 ARM$
>
>
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
>
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>
>



[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