nullfxp 2.0.xx在64位mac os x snow leopard 上的编编译注意事项

发布: 2010-03-30 12:06

环境: Snow Leopard 10.6.2 开启了64位模式。

xcode 3.2.1 g++ 4.2.1

qt 4.6.2 32位库


nullfxp 2.0.xxx


开始:
qmake -spec macx-g++ -r

注,这里要指定spec,否则会生成xcodeproj项目文件,还需要使用mac 开发IDE编译项目。

现在出现一个问题,nullfxp 中包含的libssh2.pro生成的Makefile没有指定 -arch 选项,编译出来的为64位库libssh2.a。

而使用qt的界面部分指定了-arch i386(因为qt库是32位的),最后链接的时候出错:

libssh2.a: file is not of required architecture


那么需要手动修改下libssh.pro中的Makefile, 指定-arch选项:
CFLAGS = -pipe -O2 -g -fPIC -arch i386 -Wall -W $(DEFINES)
CXXFLAGS = -pipe -O2 -g -fPIC -arch i386 -Wall -W $(DEFINES)



这样可以链接了。

还有一个问题,最后编译的时候,出现链接不到zlib库的问题:
alog.o obj/moc_taskqueuemodel.o obj/moc_taskqueueview.o obj/qrc_nullfxp.o -F/Library/Frameworks -L/Library/Frameworks libssh2/src/libssh2.a -lssl -lcrypto -framework QtSql -framework QtGui -framework QtNetwork -framework QtCore
Undefined symbols:
"_inflateEnd", referenced from:
_comp_method_zlib_dtor in libssh2.a(comp.o)
"_deflate", referenced from:
_comp_method_zlib_comp in libssh2.a(comp.o)
_comp_method_zlib_comp in libssh2.a(comp.o)
"_deflateEnd", referenced from:
_comp_method_zlib_dtor in libssh2.a(comp.o)
"_inflateInit_", referenced from:
_comp_method_zlib_init in libssh2.a(comp.o)
"_deflateInit_", referenced from:
_comp_method_zlib_init in libssh2.a(comp.o)
"_inflate", referenced from:
_comp_method_zlib_comp in libssh2.a(comp.o)
_comp_method_zlib_comp in libssh2.a(comp.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[1]: *** [../bin/nullfxp.app/Contents/MacOS/nullfxp] Error 1
make: *** [sub-src-make_default-ordered] Error 2

这需要修改nullfxp的Makefile文件,加上-lz指令,使其能链接zlib库。


至此,编译就能完成。


原文: http://qtchina.tk/?q=node/413

Powered by zexport