使用带有Qt Creator的远程Linux设备软链接复制库

时间:2012-09-19 20:25:53

标签: linux qt embedded qt-creator embedded-linux

我正在尝试一些开源代码,但我将它部署到远程linux设备时遇到了麻烦。上传库的软链接时会发生错误。我有以下内容:

  • 在Windows 7计算机上的VMWare Player中运行的Ubuntu 10.04
  • 嵌入式Linux设备
  • Qt Creator 2.4.1

我和其他Qt项目使用了相同的系统,并且能够部署到远程linux目标。该项目的不同之处在于它使用具有软链接的库。现在我在* .pro文件中有以下内容:

# remote deployment of libraries
install_lib.path = /home/name
install_lib.files = ../../lib/*
install_lib.extra = cp ../../lib/* /home/name

# install
target.path = /home/name
sources.path = /home/name
INSTALLS += target sources install_lib

我收到的错误如下:

ln: invalid option -- 'v'
BusyBox v1.19.4 (2012-09-11 06:53:36 PDT) multi-call binary.

Usage: ln [OPTIONS] TARGET... LINK|DIR

Create a link LINK or DIR/TARGET to the specified TARGET(s)

    -s  Make symlinks instead of hardlinks
    -f  Remove existing destinations
    -n  Don't dereference symlinks - treat like normal file
    -b  Make a backup of the target (if exists) before link operation
    -S suf  Use suffix instead of ~ when making backup files

12:39:46: Failed to upload file '/home/name/Qt/proj/lib/libq.so'.
12:39:46: Deploy step failed.

对于我未经训练的眼睛,看起来Qt正在尝试使用我的设备上BusyBox不支持的命令。有没有更好的方法将文件从我的开发环境移动到设备?有可能我不需要更改库中的任何内容,但如果我这样做,我希望自动上传。

顺便说一句,我也尝试过使用QMAKE_PRE_LINK和QMAKE_POST_LINK但没有成功。尝试在Qt Creator中添加部署步骤也是如此。如果有另一种方式将我的项目与图书馆联系起来,我也愿意尝试。

更新

以下是Makefile的部分内容,用于显示qmake根据我的* .pro文件生成的内容。

INSTALL_PROGRAM = install -m 755 -p

install_install_lib: first FORCE
    @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/home/name/ || $(MKDIR) $(INSTALL_ROOT)/home/name/ 
    cp ../../lib/* /home/name
    -$(INSTALL_PROGRAM) (edit)/lib/libqhttpserver.so $(INSTALL_ROOT)/home/name/
    -$(INSTALL_PROGRAM) (edit)/lib/libqhttpserver.so.0 $(INSTALL_ROOT)/home/name/
    -$(INSTALL_PROGRAM) (edit)/lib/libqhttpserver.so.0.1 $(INSTALL_ROOT)/home/name/
    -$(INSTALL_PROGRAM) (edit)/lib/libqhttpserver.so.0.1.0 $(INSTALL_ROOT)/home/name/

老实说,似乎install_lib.extra字段的功能并不多。

1 个答案:

答案 0 :(得分:0)

Creator在不使用Makefile的情况下自行部署文件,因此编辑这些文件无济于事。

有很多工作要做。从版本2.4开始,使用远程linux使Creator更好地工作,所以你应该尝试获得更新的版本。