Search code examples
autotoolsautoconf

how to trace ./configure failure on cross compile


I am not autotool/autoconf expert

As title, I am working on cross-compile for ARM platform.then try

 CC=arm-openwrt-linux-gcc LD=arm-openwrt-linux-ld AR=arm-openwrt-linux-ar ./configure --host=arm --build=i386 --target=arm 

then I get below messages that it seems not support share library

checking whether the arm-openwrt-linux-gcc linker (arm-openwrt-linux-ld) supports shared libraries... yes
...
checking if libtool supports shared libraries... no
checking whether to build shared libraries... no
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... arm-openwrt-linux-ld
checking if the linker (arm-openwrt-linux-ld) is GNU ld... yes
checking whether the g++ linker (arm-openwrt-linux-ld) supports shared libraries... no
checking for g++ option to produce PIC... -fPIC -DPIC
...
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (arm-openwrt-linux-ld) supports shared libraries... no

I know the compile was support share library. and I want to get fix configure

what is the best way to trace/debug such problem at configure?


Solution

  • what is the best way to trace/debug such problem at configure?

    If an Autoconf-based configure script's output does not give you enough information to identify the problem, then you can get more information from the log file that configure writes, configure.log. It provides a great deal of detail about what configure did, including the specific command it runs for each test, the input (if relevant), and its output / stderr / return code.

    It is sometimes helpful to look at the configure script itself, too, though you should be prepared to use your editor's search feature to find relevant code, as the script is typically thousands of lines long.

    But before you start digging into that, do try specifying the host system via an appropriate full triplet. If you do so then you probably will not need to specify particular tools via environment variables, and you may find that it resolves the problem altogether. You may also specify a build triplet, but that's not typically necessary. A target triplet is altogether unnecessary unless you're building a compiler, for target describes (only) the type of system for which such a compiler produces output.

    For example, it looks like this might be appropriate for your case:

    ./configure --host=arm-openwrt-linux