如何让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下面或者其他什么地方了。
问题解决。
首先说下版本,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下面或者其他什么地方了。
问题解决。
相关文章推荐
- solaris 10 下如何以root身份通过ssh登录
- 修改ssh端口和如何禁止root用户的远程登录
- ubuntu 16.04 启用root用户方法 ,并可以ssh远程root用户登录
- 如何在Ubuntu上让root帐号可以登录SSH
- CentOS如何禁用root本地或远程ssh登录及升级OpenSSH
- solaris 10 开通root 远程ssh权限
- Solaris - 让root用户可以SSH登录
- solaris10下允许root通过telnet远程登录
- CENTOS如何禁用ROOT本地或远程SSH登录
- Linux如何禁用ROOT本地或远程SSH登录
- Solaris - 让root用户可以SSH登录
- 如何在Ubuntu上让root帐号可以登录SSH
- CentOS如何禁用root本地或远程ssh登录
- Solaris 10开启root不能登录SSH服务
- Solaris 11如何允许root用户远程登录
- Solaris - 让root用户可以SSH登录
- 局域网如何通过SSH 2连接上VMware 10虚拟机新装的centOS系统远程登录
- ssh如何限制root只能从某些指定的IP登录
- ubuntu root用户ssh远程登录
- windows下如何使用ssh远程登录ubuntu