您的位置:首页 > 其它

如何让solaris 10的root可以远程SSH 登录

2010-06-09 12:06 441 查看
为什么要编译呢,当然是qt没有自带mysql的驱动,所以必须要自己编译,make make install,才能连接mysql进行开发,拷贝别人编译出来的东西貌似是不行的……至少我没有搞定这件偷懒的事。
首先说下版本,windows是32位的,如果是64位系统的同学请绕行吧……我下载的qt sdk 4.8.1好像在64位下工作不太正常。
安装qt sdk4.8.1,安装mysql-installer-5.5.25,记得要选择定制安装,这时选中安装Libs和Include文件。我是全部安装了。
因为qt编译对空格很敏感,所以要把mysql的lib和Incluce这两个目录放到一个没有空格的目录下,安装目录有空格也不要紧,复制出来就行。我放到了C:\mysql\目录下。
然后就是编译mysql驱动了,打开Qt Command Prompt。你会发现,你的环境变量他自己给你设定了,这样的话,就需要在你的编译驱动之前就修改这些环境变量,不然的话会在编译的时候遇到各种“不是命令或者内部文件”的问题。

下面是重点之一。
引用
You need to get the MySQL installation files. Run SETUP.EXE and choose "Custom Install". Install the "Libs & Include Files" Module. Build the plugin as follows
here it is assumed that MySQL is installed in C:\MYSQL
cd %QTDIR%\src\plugins\sqldrivers\mysql qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\OPT\LIBMYSQL.LIB" mysql.pro nmake If you are not using a Microsoft compiler, replace nmake with make in the line above.
这就是一个容易搞混的地方
上面是使用的libmysql.lib和nmake来编译的,如果使用的是msvc的编译器,那上面是没问题的,但是如果使用的是mingw编译器,那就会出错,有undefined reference„等类错误字样。这是因为mingw使用的库和msvc使用的不同格式的库而引起的。而mysql只提供了msvc可使用的库。

qt4 for mingw要想编译出qsqlmysql库来,我们先得编译出mingw需要的libmysql.a这个文件来。可使用mingw工具来生成。 mingw -utils包里的reimp命令,如果没有这个命令的话,可去下载 mingw -utils,并把它解压开后的bin目录里的reimp内容拷贝到 mingw的bin目录下面。
CODE:
cd c:\mysql\lib\

reimp -d libmysql.lib

dlltool -k -d libmysql.def -l libmysql.a
这时候你会发现你的lib文件夹下面会多出两文件, libmysql.a & libmysql.def ,推荐使用mysql5.5,其他的貌似没有libmysql*.lib文件。很多教程提到lib下有opt目录,但是我的没有,应该是版本不同吧,去掉opt这一层路径就不影响了。

找到qt4.8.1是source源文件所在目录,这个和4.7.x有区别,我的qt是默认路径,源文件在C:\QtSdk\QtSources\4.8.1\src下。

下面是重点之二。
然后使用qmake和make命令编译:

cd C:\QtSdk\QtSources\4.8.1\src\plugins\sqldrivers\mysql

qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=-LC:\MYSQL\LIB\ -lmysql" mysql.pro

mingw32-make

mingw32-make install

注意 LIBS+=这个的用法,网上很多文章都不适合的。 语法是LIBS+= -L直接打地址-l直接打库名。
注意点:-L后面没有空格,直接跟着地址,然后空格,-l后面是去掉lib之后的文件名(别大意了哦!)。一个例子:如我们有E:\CLibraries\NewmatL\debug\libNewmatL.a这个文件,则: LIBS += -LE:\CLibraries\NewmatL\debug\ -lNewmatL。 注意引号不能错了。
我们使用mingw编译器,所以是mingw32-make。

附上我的屏幕输出 :

…………………………
Creating library file: debug\libqsqlmysqld4.a
mingw32-make[1]: Leaving directory `C:/QtSDK/QtSources/4.8.1/src/plugins/sqldriv
ers/mysql'

C:\QtSDK\QtSources\4.8.1\src\plugins\sqldrivers\mysql>mingw32-make install
mingw32-make -f Makefile.Debug install
mingw32-make[1]: Entering directory `C:/QtSDK/QtSources/4.8.1/src/plugins/sqldri
vers/mysql'
copy /y "debug\qsqlmysqld4.dll" "c:\QtSDK\Desktop\Qt\4.8.1\mingw\plugins\sqldriv
ers\qsqlmysqld4.dll"
已复制 1 个文件。
mingw32-make[1]: Leaving directory `C:/QtSDK/QtSources/4.8.1/src/plugins/sqldriv
ers/mysql'

mingw32-make默认似乎是编译debug项目,编译产生了debug版的qsqlmysqld4.dll文件。我们还需要release项目编译产生的qsqlmysql4.dll文件,所以继续编译:

mingw32-make -f Makefile.Release

mingw32-make -f Makefile.Release install

屏幕输出如下:
…………………………
…………………………
Creating library file: release\libqsqlmysql4.a

C:\QtSDK\QtSources\4.8.1\src\plugins\sqldrivers\mysql>mingw32-make -f Makefile.Release install
copy /y "release\qsqlmysql4.dll" "c:\QtSDK\Desktop\Qt\4.8.1\mingw\plugins\sqldri
vers\qsqlmysql4.dll"
已复制 1 个文件。
这一步到此为止了。

最后是重点之三:
把C:\mysql\lib\libmysql.dll复制到C:\Windws\System32下。不要试图去网上下载libmysql.dll,不同版本不能混用的。不需要再复制到mingw的bin下面或者其他什么地方了。

问题解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: