将 i686-w64-mingw32-g++ 用于静态库
using i686-w64-mingw32-g++ for static libraries
我有一个 JNI 项目,我必须在 Windows 上工作(我正在 Linux 上工作)。该项目实际上依赖于静态的第三方库文件(存档即 .a 文件)。我正在尝试使用 i686-w64-mingw32-g++
并包含 -static
后跟静态第三方库名称来创建 JNI 共享库文件。以下是我正在使用的命令
i686-w64-mingw32-g++ -v -L./ -L/home/user/jre1.8.0_40/lib/amd64/ -I/user/all/apps/Linux2/x86_64/gcc/4.8.2/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.8.2/include -shared -o test.dll test.cpp -lstdc++ -static -thirdparty
尽管将第三方库放在当前工作目录中,我还是不断收到错误
/user/all/apps/Linux2/src/mxe/2013_12_03/usr/bin/../lib/gcc/i686-w64-mingw32/4.8.1/../../../../i686-w64-mingw32/bin/ld: cannot find -thirdparty
请注意:我包含了 -I/user/all/apps/Linux2/x86_64/gcc/4.8.2/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.8.2/include
以避免我在包含路径之前遇到的错误 cannot find jni.h
。
我还尝试使用 gcc 代替 g++ 进行编译。
我是否需要创建此第三方库的.dll(目前它是包含.obj 文件的存档.a)?
作为交叉编译器的新手,我可能做错了什么。请纠正我,对此的任何建议都会非常有帮助。谢谢。
-Wl,--export-all-symbols -Wl,--add-stdcall-alias -v
添加这个解决了我的问题
我有一个 JNI 项目,我必须在 Windows 上工作(我正在 Linux 上工作)。该项目实际上依赖于静态的第三方库文件(存档即 .a 文件)。我正在尝试使用 i686-w64-mingw32-g++
并包含 -static
后跟静态第三方库名称来创建 JNI 共享库文件。以下是我正在使用的命令
i686-w64-mingw32-g++ -v -L./ -L/home/user/jre1.8.0_40/lib/amd64/ -I/user/all/apps/Linux2/x86_64/gcc/4.8.2/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.8.2/include -shared -o test.dll test.cpp -lstdc++ -static -thirdparty
尽管将第三方库放在当前工作目录中,我还是不断收到错误
/user/all/apps/Linux2/src/mxe/2013_12_03/usr/bin/../lib/gcc/i686-w64-mingw32/4.8.1/../../../../i686-w64-mingw32/bin/ld: cannot find -thirdparty
请注意:我包含了 -I/user/all/apps/Linux2/x86_64/gcc/4.8.2/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.8.2/include
以避免我在包含路径之前遇到的错误 cannot find jni.h
。
我还尝试使用 gcc 代替 g++ 进行编译。
我是否需要创建此第三方库的.dll(目前它是包含.obj 文件的存档.a)?
作为交叉编译器的新手,我可能做错了什么。请纠正我,对此的任何建议都会非常有帮助。谢谢。
-Wl,--export-all-symbols -Wl,--add-stdcall-alias -v
添加这个解决了我的问题