【发布时间】:2011-05-22 05:37:22
【问题描述】:
我正在编写一个与 USB 硬件接口板通信的程序,这需要一个小型 JNI 库。我在我的编译机上运行 10.5.8,并且可以使用以下命令成功编译 JNI 的共享库:
# Build shared library for K8055
g++ -x objective-c -fmessage-length=0 -pipe -Wno-trigraphs \
-fpascal-strings -fasm-blocks -O0 -mdynamic-no-pic -fvisibility=hidden -gdwarf-2 \
-Wmost -Wno-four-char-constants -Wno-unknown-pragmas \
-c ./K8055/K8055.m \
-o ./K8055/K8055.o \
-arch x86_64 \
-arch i386
echo "Building JNI shared library..."
gcc -c -m64 -I/System/Library/Frameworks/JavaVM.framework/Headers \
k8055usbio.m -o k8055usbio.so -arch x86_64
echo "Compiling dynamic library with both..."
g++ -m64 -dynamiclib -o ./lib/libk8055usbio.dylib \
k8055usbio.so ./K8055/K8055.o\
-framework Foundation -framework IOKit
我真的不明白我在这里做什么;我已经设法从很多谷歌搜索中拼凑起来。我的问题是:如何修改它以编译运行 10.3.9 的 PPC G3 机器?我很满意的 Java 部分。到目前为止,这是我尝试过的:
# Build shared library for K8055 (PPC)
echo "Building driver shared library..."
g++ -x objective-c -fmessage-length=0 -pipe -Wno-trigraphs \
-fpascal-strings -fasm-blocks -O0 -mdynamic-no-pic -fvisibility=hidden -gdwarf-2 \
-Wmost -Wno-four-char-constants -Wno-unknown-pragmas \
-c ./K8055/K8055.m \
-o ./K8055/K8055.o \
-arch ppc
echo "Building JNI shared library..."
gcc -c -I/System/Library/Frameworks/JavaVM.framework/Headers \
k8055usbio.m -o k8055usbio.so -arch ppc
echo "Compiling dynamic library with both..."
gcc -shared -fPIC -o ./lib/libk8055usbio.dylib k8055usbio.so \
./K8055/K8055.o -framework Foundation -framework IOKit -arch ppc
但是当我尝试 System.load() 它时,我从 Java (1.5) 程序中收到以下错误:
dyld: java bad CPU subtype in library: /libk8055usbio.dylib
Trace/BPT trap
我不知道如何修复它,我应该指定什么 CPU 子类型?
【问题讨论】:
标签: java macos g++ java-native-interface