Re: BUG: Cannot create shared object for Android x86_64

Jeffrey Walton <[email protected]>
Newsgroups gmane.comp.audio.mp3.lame
Message-ID <CAH8yC8nWxmmLyw4uUD2SjHjejZU39dXWofHbiLOMdwoy+B_CCg@mail.gmail.com>
When running the failed command manually with $CC and $CFLAGS (and
forgoing that cursed tool known as libtool), I was able to create the
shared object manually:

ame-3.99.5$ cd libmp3lame
libmp3lame$ $CC $CFLAGS -shared  .libs/VbrTag.o .libs/bitstream.o
.libs/encoder.o .libs/fft.o .libs/gain_analysis.o .libs/id3tag.o
.libs/lame.o .libs/newmdct.o .libs/presets.o .libs/psymodel.o
.libs/quantize.o .libs/quantize_pvt.o .libs/reservoir.o
.libs/set_get.o .libs/tables.o .libs/takehiro.o .libs/util.o
.libs/vbrquantize.o .libs/version.o .libs/mpglib_interface.o
-Wl,--whole-archive ../libmp3lame/vector/.libs/liblamevectorroutines.a
../mpglib/.libs/libmpgdecoder.a -Wl,--no-whole-archive  -lm
-Wl,-soname -Wl,libmp3lame.so.0 -o .libs/libmp3lame.so.0.0.0
libmp3lame$
$ cd ..
ame-3.99.5$ find . -name libmp3lame.so.0.0.0
./libmp3lame/.libs/libmp3lame.so.0.0.0


On Mon, Jan 12, 2015 at 12:56 AM, Jeffrey Walton <[email protected]> wrote:
> When compiling and linking for Android x86_64, the linking of the
> shared object libmp3lame.so.0.0.0 fails.
>
> --sysroot was used to pass the header and library paths. --sysroot was
> set in CPPFLAGS, CFLAGS and CXXFLAGS:
>
> $ echo $CPPFLAGS
> --sysroot=/opt/android-ndk-r10d/platforms/android-21/arch-x86_64
> $ echo $CFLAGS
> --sysroot=/opt/android-ndk-r10d/platforms/android-21/arch-x86_64
> $ echo $CXXFLAGS
> --sysroot=/opt/android-ndk-r10d/platforms/android-21/arch-x86_64
>
> --sysroot was used during configuration and compilation, and all the
> object files were created successfully.
>
> --sysroot was not present when creating the shared object, and the
> shared object creation failed.
>
> The invocation below needs to include CFLAGS so --sysroot is available
> to the compiler driver.
>
> **********
>
> $ echo $ANDROID_SYSROOT
> /opt/android-ndk-r10d/platforms/android-21/arch-x86_64
> $ ls $ANDROID_SYSROOT/usr/lib
> crtbegin_dynamic.o    libGLESv3.so        liblog.so
> crtbegin_so.o        libOpenMAXAL.so        libm.a
> crtbegin_static.o    libOpenSLES.so        libm.so
> crtend_android.o    libandroid.so        libmediandk.so
> crtend_so.o        libc.a            libstdc++.a
> libEGL.so        libc.so            libstdc++.so
> libGLESv1_CM.so        libdl.so        libz.a
> libGLESv2.so        libjnigraphics.so    libz.so
>
> **********
>
> libtool: link: x86_64-linux-android-gcc -shared  .libs/VbrTag.o
> .libs/bitstream.o .libs/encoder.o .libs/fft.o .libs/gain_analysis.o
> .libs/id3tag.o .libs/lame.o .libs/newmdct.o .libs/presets.o
> .libs/psymodel.o .libs/quantize.o .libs/quantize_pvt.o
> .libs/reservoir.o .libs/set_get.o .libs/tables.o .libs/takehiro.o
> .libs/util.o .libs/vbrquantize.o .libs/version.o
> .libs/mpglib_interface.o  -Wl,--whole-archive
> ../libmp3lame/vector/.libs/liblamevectorroutines.a
> ../mpglib/.libs/libmpgdecoder.a -Wl,--no-whole-archive  -lm
> -Wl,-soname -Wl,libmp3lame.so.0 -o .libs/libmp3lame.so.0.0.0
>
> /opt/android-ndk-r10d/toolchains/x86_64-4.9/prebuilt/darwin-x86_64/bin/../lib/gcc/x86_64-linux-android/4.9/../../../../x86_64-linux-android/bin/ld:
> error: cannot open crtbegin_so.o: No such file or directory
> /opt/android-ndk-r10d/toolchains/x86_64-4.9/prebuilt/darwin-x86_64/bin/../lib/gcc/x86_64-linux-android/4.9/../../../../x86_64-linux-android/bin/ld:
> error: cannot open crtend_so.o: No such file or directory
> /opt/android-ndk-r10d/toolchains/x86_64-4.9/prebuilt/darwin-x86_64/bin/../lib/gcc/x86_64-linux-android/4.9/../../../../x86_64-linux-android/bin/ld:
> error: cannot find -lm
> /opt/android-ndk-r10d/toolchains/x86_64-4.9/prebuilt/darwin-x86_64/bin/../lib/gcc/x86_64-linux-android/4.9/../../../../x86_64-linux-android/bin/ld:
> error: cannot find -lc
> /opt/android-ndk-r10d/toolchains/x86_64-4.9/prebuilt/darwin-x86_64/bin/../lib/gcc/x86_64-linux-android/4.9/../../../../x86_64-linux-android/bin/ld:
> error: cannot find -ldl
> collect2: error: ld returned 1 exit status
> make[3]: *** [libmp3lame.la] Error 1
> make[2]: *** [all-recursive] Error 1
> make[1]: *** [all-recursive] Error 1
> make: *** [all] Error 2

------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.