• 6494阅读
  • 4回复

linux:如果我在一些较高版本的环境上,写得界面程序,拿到较低版本的环境上运行,需要做些什么工作? [复制链接]

上一主题 下一主题
离线conta
 
只看楼主 倒序阅读 楼主  发表于: 2010-11-24
例如:如果我在
qt4.7+fc13
的环境上编写的程序,编译好后,要拿到fc8上运行,那么,需要做些什么工作?


通常这种做法对吗?


还是应该采取另一种方法?:
把整个工程拿到fc8环境上编译,然后编译出来的程序,只在fc8上运行。


而把工程拿到fc13环境上编译,编译出来的程序,只在fc13上运行。


我的意思是说,是不是:针对不同的运行环境,需要把工程拿到不同的环境上编译?






离线dbzhang800

只看该作者 1楼 发表于: 2010-11-24
主要是看你用了什么,准备如何发布。如果你的程序是低版本 Qt4.5 编译,那么它在Qt4.5 及高版本下都可以直接运行。

如果你用了高版本的特性,比如Qt4.7 的 qml,如果要在低版本的机器上运行程序,你需要发布你运行时的需要的库。

如何发布,具体看Qt自带的Manual
离线conta
只看该作者 2楼 发表于: 2010-11-24
我现在出现一个问题,很纠结:

有两台机子:

一台是fc8+QT4.6
另一台是fc8+QT4.5

我在fc8+QT4.6上,编译了一个很简单的工程,代码如下面。
在本机子上运行没有问题,但是在拿到fc8+QT4.5的机子上运行,却出现"段错误"。

我已经在fc8+QT4.5的机子上发布了QT4.6的库。

有知道原因的吗?

代码很简单:




**********************************代码***************************
*************main.cpp***********
#include "hh_widget.h"

int main(int argc,char* argv[])
{
   QApplication app(argc,argv);

   QWidget ww;

   HH_Widget  wid(&ww,"eee");
   wid.show();

   return app.exec();
}


**************hh_widget.h**********************
#ifndef HH_WIDGET_H
#define HH_WIDGET_H


#include <QtGui>

class HH_Widget : public QWidget
{
    Q_OBJECT

    public:
    HH_Widget(QWidget *parent,const QString backgroundFilename);
    virtual ~HH_Widget();
};

#endif // HH_WIDGET_H

*******hh_widget.cpp**********

#include "hh_widget.h"


HH_Widget::~HH_Widget() {}

HHWidget::HH_Widget(QWidget *parent,const QString backgroundFilename)
        : QWidget(parent)
{

}








[ 此帖被conta在2010-11-24 21:52重新编辑 ]
离线dbzhang800

只看该作者 3楼 发表于: 2010-11-24
贴程序没什么用,不妨详细介绍一下你的程序是如何发布的,采取了哪些措施:来使得你的程序使用Qt4.6的库,而不是系统中的Qt4.5的库。又是如何确认你的库被成功调用的
离线conta
只看该作者 4楼 发表于: 2010-11-24
首先,我编译代码的系统,安装的是qt-sdk-linux-x86-opensource-2010.03.bin;

安装完毕,我给QtCreator选择了/opt/qt/bin/qmake,选项是在Tools里的QtVersions;

然后就建立一个空工程,输入上面的代码。

编译,生成可执行程序。。。一切ok。


接下来就是发布了:

首先,我把生成的可执行程序,拷贝到FC8+QT4.5的系统上;

然后,拷贝两个库
libQtGui.so.4.6.3
libQtCore.so.4.6.3
到FC8+QT4.5的系统的目录/usr/lib/下;

接着,在FC8+QT4.5系统上,用命令
ln  -s       /usr/lib/libQtGui.so.4.6.3        /usr/lib/libQtGui.so.4
ln  -s      /usr/lib/libQtCore.so.4.6.3      /usr/lib/libQtCore.so.4
生成链接文件。

最后,在终端上,运行那个,可执行程序, 却出现了"段错误"的提示。。。

















快速回复
限100 字节
 
上一个 下一个