I am trying to link my Android app with a third-party archive. This archive, libvpx_new.a,
is one among many archives that are being created as part of building webrtc for Android (on Ubuntu). I copy this archive and the header files into C:ThirdParty
directory on Windows. My Android app tries to link with ThirdParty/libvpx_new/libvpx_new.a
.
When the build runs, I get link errors such as:
xxx/arm-linux-androideabi/bin/ld.exe: error: cannot open C:/ThirdParty/libvpx_new/source/libvpx/vp8/libvpx_new.vp8_dx_iface.o: No such file or directory
If I simply copy all the missing object files (in appropriate subdirectories), my build goes through. It is as if the archive file libvpx_new.a
contains links to the object files instead of storing the actual functions.
Is this possible? If so, is there a way to fix the archive file to just absorb the object files instead of pointing to them? Regards.
Advertisement
Answer
It turns out archives can indeed store external links. Such archives are called “thin” archives. Look at Turn thin archive into normal one to convert thin archives to normal archives.