Posted on 2008-10-14 11:22
Prayer 閱讀(1464)
評論(0) 編輯 收藏 引用 所屬分類:
C/C++
libwrapper.so: $(libwrapper_so_OBJECTS)
@echo ${COMPILE}
@echo $(libwrapper_so_OBJECTS)
${COMPILE} -shared $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
# ${COMPILE} -qmkshrobj $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
在linux下編譯沒有問題,但是在AIX下編譯會報(bào)如下錯(cuò)誤
xlc -DAIX -c -I/usr/java14/include -I/usr/java14/include/aix wrapperinfo.c
xlc -DAIX -shared wrapperjni_unix.o wrapperinfo.o wrapperjni.o -o ../../lib/libwrapper.so
ld: 0706-012 The -h flag is not recognized.
ld: 0706-012 The -a flag is not recognized.
gmake: *** [libwrapper.so] Error 255
百思不得其解,網(wǎng)上一查,很多類似情況,但都沒有解決方法,最后試著將Makefile修改如下
libwrapper.so: $(libwrapper_so_OBJECTS)
@echo ${COMPILE}
@echo $(libwrapper_so_OBJECTS)
# ${COMPILE} -shared $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
${COMPILE} -qmkshrobj $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
編譯通過,問題解決。
現(xiàn)在來想,可能是AIX下生成動態(tài)庫使用的編譯器選項(xiàng)為-qmkshrobj,而不是-shared造成的。
至于報(bào)-h和-a選項(xiàng)標(biāo)識錯(cuò)誤,估計(jì)是連接器不認(rèn)識-shared選項(xiàng),故而當(dāng)作-s,-h,-a,-r,-e,-d選項(xiàng)來對待,
而恰巧支持-s,-r,-e選項(xiàng),而不支持-h,-a選項(xiàng),所以出現(xiàn)該錯(cuò)誤。
文章出處:http://www.diybl.com/course/3_program/c++/cppjs/2008422/110817.html