【发布时间】:2012-04-28 18:32:42
【问题描述】:
我在使用通过 $NDK/build/tools/make-standalone-toolchain.sh 脚本创建的独立 NDK 工具链构建 Android 协议缓冲区时遇到问题。我遇到的问题是:
libtool: link: g++ -Wall -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -O2 -g -DNDEBUG -o protoc main.o ./.libs/libprotobuf.a ./.libs/libprotoc.a /home/sizeak/AudioFingerprinting/ProtoBuf/jni/src/.libs/libprotobuf.a -lz -lc
./.libs/libprotoc.a(plugin.pb.o): In function `GoogleOnceInit':
/home/sizeak/AudioFingerprinting/ProtoBuf/jni/src/./google/protobuf/stubs/once.h:115: undefined reference to `pthread_once'
这似乎意味着缺少 pthreads 库,但是 sysroot 是由 ndk 脚本创建的,因此应该包含所有内容,对吧?我在某处读到,使用独立工具链时无需显式链接 pthread。我使用的配置命令是:
./configure --host=arm-eabi --with-sysroot=$SYSROOT CC=$CC --enable-cross-compile --with-protoc=protoc LIBS="-lc"
环境变量设置为指向脚本创建的 sysroot。
我在网上的许多页面上都看到过这个问题,但似乎没有人发布答案。有人可以帮忙吗?
【问题讨论】:
-
是您的 Android 应用程序的 ProtoBuf,您是否正在尝试创建一个共享库并在此 android 应用程序中使用它。您是否在 android.mk 文件中提到了 pthread 选项?
-
ProtoBuf 是一个在我发现独立工具链选项之前尝试使用 ndk-build 构建库的项目。
标签: android android-ndk protocol-buffers