【问题标题】:Qt Creator - set architecture flagQt Creator - 设置架构标志
【发布时间】:2012-07-01 11:14:58
【问题描述】:

我正在尝试学习如何使用 Qt Creator 在 C++ 中将 libfreenect 与 PCL 库一起使用。 我是 c++ 的 n00b,所以最终我在编译示例时遇到了错误:

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 是为我的机器上的 i386 架构构建的(运行 osx 10.6.8)。 我注意到 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?

【问题讨论】:

    标签: c++ qt kinect point-cloud-library


    【解决方案1】:
    FOO = -arch i386
    LIBS = -arch i386
    LIBS += $$FOO
    

    CONFIG += i386
    

    编辑

    要为特定架构设置 Qt,您必须运行命令提示符,输入 Qt 目录并运行:

    configure -embedded i386 -no-webkit
    

    确认后,您将需要等待一段时间,然后按照说明进行操作。 Here 你还有其他的配置标志。它将配置您的 Qt,然后您将重新编译二进制文件。配置后将指导您如何操作。

    【讨论】:

    • CONFIG += i386 似乎没有太大变化,但 LIBS += 部分确实发生了变化。现在我遇到了更多问题:似乎很多库都是为 x86_64(PCL、QtCore 等)构建的。我为 i386 编译了 libfreenect,因为我也为 i386 提供了 libusb。为 x86_64 编译/安装 libusb 和 libfreenect 并继续进行可能更简单。感谢输入(+1)。在 QT 中设置 arch 是否有推荐/最佳实践?
    猜你喜欢
    • 2019-05-06
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    相关资源
    最近更新 更多