我使用Xcode 3.0使用CFITSIO库编译测试C程序。
根据以前的帖子我遇到的建议,我已经将CFITSIO构建为通用库,并将fitsio.h和libcfitsio.a文件添加到我的项目中。我已经验证我正在使用正确的版本(x86_64)。我已经验证了libcfitsio.a文件位于Target > Link Binary with Libraries
标签下。我继续收到以下错误。
以前使用cfitsio创建的项目有效 - 我不是链接库的人。 另外,我可以从终端成功链接cfitsio。
有什么建议吗?
Building target “test1” of project “test1” with configuration “Release”
Checking Dependencies
ld /Users/jacqueline/test1/build/test1.build/Release/test1.build/Objects-normal/ppc/test1 normal ppc
cd /Users/jacqueline/test1
/Developer/usr/bin/gcc-4.0 -o /Users/jacqueline/test1/build/test1.build/Release/test1.build/Objects-normal/ppc/test1 -L/Users/jacqueline/test1/build/Release -L/Users/jacqueline/test1 -L/Users/jacqueline/test1/cfitsio/build/i386 -L/Users/jacqueline/test1/cfitsio/build/ppc -L/Users/jacqueline/test1/cfitsio/build/x86_64 -L/Users/jacqueline/test1/cfitsio/lib -L/Users/jacqueline/test1/cfitsio -F/Users/jacqueline/test1/build/Release -filelist /Users/jacqueline/test1/build/test1.build/Release/test1.build/Objects-normal/ppc/test1.LinkFileList -lcfitsio -arch ppc -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk
ld: warning in /Users/jacqueline/test1/libcfitsio.a, file is not of required architecture
Undefined symbols:
"_ffopentest", referenced from:
_main in main.o
"_ffclos", referenced from:
_main in main.o
"_ffgrec", referenced from:
_main in main.o
"_ffghsp", referenced from:
_main in main.o
"_ffrprt", referenced from:
_main in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
答案 0 :(得分:0)
好像图书馆不是完全普及的。尝试一次只针对其中一个体系结构构建项目(即,仅分别ppc
,ppc64
,i386
和x86-64
。当(如果)其中一个失败时,您知道您的库缺少哪个架构,因此您可以使用它重新编译它。 (或者,如果您不打算在该体系结构上进行部署,则可以不进行编译。例如,构建PPC 64没有任何意义,除非您真正从中受益,因为它将是唯一的机器。运行它是G5s,他们将运行普通的旧PPC 32位代码就好了。)
答案 1 :(得分:0)
我编辑过Xcode
'Project' > 'Edit Project Settings' > 'Architecture'
不包括PPC,默认情况下似乎存在,构建成功。我在Intel Core 2 Duo上运行OSX 10.5.8。
以前我一直在使用cfitsio
库本身的各种版本,而不是改变我的Xcode项目的默认架构。