• 4918阅读
  • 5回复

Linux下编译出错问题2 [复制链接]

上一主题 下一主题
离线caichao07
 

只看楼主 倒序阅读 楼主  发表于: 2009-12-15
#include <QtGui/QApplication>
#include <QtGui/QFont>
#include <QtCore/QTranslator>
#include <QtGui/QSplitter>
#include <QtGui/QTextEdit>
int main(int argc, char *argv[])
{
QFont font("ZYSong18030", 12);
QApplication :: setFont(font);

QApplication app(argc, argv);
QTranslator translator(0);
translator.load("splitter_zh", ".");
app.installTranslator(&translator);

QSplitter *splitterMain=new QSplitter(Qt::Horizontal, 0);
QTextEdit *textLeft=new QTextEdit( QObject::tr("Left Widget"), splitterMain);
textLeft->setAlignment(Qt::AlignCenter);

QSplitter *splitterRight=new QSplitter(Qt::Vertical,splitterMain);
splitterRight->setOpaqueResize(false);
QTextEdit *textUp=new QTextEdit(QObject::tr("Top Widget"),splitterRight);
textUp->setAlignment(Qt::AlignCenter);
QTextEdit *textBottom=new QTextEdit(QObject::tr("Bottom Widget"), splitterRight);
textBottom->setAlignment(Qt::AlignCenter);

splitterMain->setStretchFactor(1,1);
splitterMain->setWindowTitle(QObject::tr("Splitter"));

splitterMain->show();
return app.exec();

}

以上代码用qmake可以编译成功
但是用g++ *** -I$QTDIR/include -L$QTDIR/lib 进行编译却无法成功
不知道哪位高手能指点一下原因,感激不尽!!!
离线dbzhang800

只看该作者 1楼 发表于: 2009-12-15
如果真需要手动调用 g++ 的话

不妨先运行 make 看看它调用 g++ 时后面添加的参数
离线caichao07

只看该作者 2楼 发表于: 2009-12-16
用qmake运行编译,后面添加了一大堆的参数有些也不知道是不是必须要用到的
能解释一下上面的那个简单程序,编译还差什么参数吗

谢谢指教!
离线dbzhang800

只看该作者 3楼 发表于: 2009-12-16
至少还差 -lQtCore4  -lQtGui4
离线caichao07

只看该作者 4楼 发表于: 2009-12-16
使用make成功编译如下:
[caichao@localhost SplitterWindow]$ qmake -project
[caichao@localhost SplitterWindow]$ qmake
[caichao@localhost SplitterWindow]$ make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.3.1/mkspecs/linux-g++ -I. -I/usr/local/Trolltech/Qt-4.3.1/include/QtCore -I/usr/local/Trolltech/Qt-4.3.1/include/QtCore -I/usr/local/Trolltech/Qt-4.3.1/include/QtGui -I/usr/local/Trolltech/Qt-4.3.1/include/QtGui -I/usr/local/Trolltech/Qt-4.3.1/include -I. -I. -I. -o SplitterWindow.o SplitterWindow.cpp
g++ -Wl,-rpath,/usr/local/Trolltech/Qt-4.3.1/lib -o SplitterWindow SplitterWindow.o    -L/usr/local/Trolltech/Qt-4.3.1/lib -lQtGui -L/usr/local/Trolltech/Qt-4.3.1/lib -L/usr/X11R6/lib -lpng -lSM -lICE -pthread -pthread -lXi -lXrender -lXrandr -lXcursor -lXinerama -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread -lgthread-2.0 -lglib-2.0 -lrt -ldl -lpthread

请问如果以上的参数都是必须的吗
如果这样那就真的很难手工编译了,有没有什么好的编译环境适合初学者用的
离线dbzhang800

只看该作者 5楼 发表于: 2009-12-16
这些参数不全是必须的。不过,如果你认真看的话,其实上面也没多少。无非定义了一些宏 -D ..., 一些编译器的选项 -Wall  -O2 ... 头文件路径 -I , 链接器需要的库目录 -L   库文件  -l

如果和 g++ 的所有选项比起来,Qt所用到的其实已经少的可怜了。

话说回来,真正学Qt编程的话,没人会这么直接调用 g++ 吧。 qmake、cmake一类的不都很好用么
快速回复
限100 字节
 
上一个 下一个