Qt Creator - 设置架构标志

3

我正在尝试使用Qt Creator在C++中使用PCL库与libfreenect进行学习。

由于我对C++不熟悉,因此最终遇到了编译示例时的错误:

ld: warning: in /usr/local/lib/libfreenect.dylib, file was built for i386 which is not the architecture being linked (x86_64)
make: Leaving directory `/Users/george/Documents/Qt/OKPCL'
Undefined symbols:
  "_freenect_init", referenced from:
      Freenect::Freenect::Freenect()in OKPCL.o
  "_freenect_select_subdevices", referenced from:
      Freenect::Freenect::Freenect()in OKPCL.o
  "_freenect_process_events", referenced from:
      Freenect::Freenect::operator()()in OKPCL.o
  "_freenect_shutdown", referenced from:
      Freenect::Freenect::~Freenect()in OKPCL.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [OKPCL] Error 1
The process "/usr/bin/make" exited with code 2.
Error while building project OKPCL (target: Desktop)
When executing build step 'Make'

libfreenect是针对我的机器(运行osx 10.6.8)的i386架构构建的。 我注意到Qt Creator默认的Make会执行以下操作:

make: Entering directory `/Users/george/Documents/Qt/OKPCL'
g++ -headerpad_max_install_names -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -o OKPCL main.o OKPCL.o   -F/Users/george/QtSDK/Desktop/Qt/474/gcc/lib -L/Users/george/QtSDK/Desktop/Qt/474/gcc/lib /usr/local/lib/libfreenect.dylib /usr/local/lib/libpcl_io.dylib /usr/local/lib/libpcl_common.dylib -framework QtCore 

在 .pro 文件中,是否有一个可以设置 Qt 标志的选项,以便将架构设置为 i386 而不是 x86_64?

1个回答

3
FOO = -arch i386
LIBS = -arch i386
LIBS += $$FOO

或者
CONFIG += i386

编辑

要为特定架构设置Qt,您需要运行命令提示符,进入您的Qt目录并运行:

configure -embedded i386 -no-webkit

确认后,您需要等待一段时间,然后按照说明进行操作。在这里,您可以找到其他用于配置的标志。它将配置您的Qt,然后您将重新编译二进制文件。配置完成后,您将得到具体的操作指导。

CONFIG += i386似乎没有太多变化,但LIBS +=部分确实有变化。现在我遇到了更多问题:似乎很多库都是为x86_64(PCL,QtCore等)构建的。我为i386编译了libfreenect,因为我也为i386编译了libusb。为x86_64编译/安装libusb和libfreenect可能会更简单,然后继续进行。感谢输入(+1)。在QT中设置架构是否有推荐的/最佳实践? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接