前幾天按照Ubuntu How-To上的NVIDIA驅動安裝說明安裝了8672版的驅動,結果發現只要退出X-Window,系統就會沒有反應,網上搜了搜,發現有人也有一樣的情況,按照說明重新安裝、重新配置Xorg,問題依然沒有解決,X-Window也起不來了。
到NVIDIA網站上下了最新的8774版驅動后,趕緊找找看怎么自己裝,有人已經寫好了
在恢復模式下:
需要gcc支持,如果沒有安裝則:
apt-get install build-essential gcc
刪除已經安裝的NVIDIA驅動:
apt-get --purge remove linux-restricted-modules-`uname -r` linux-restricted-modules-common nvidia-glx nvidia-settings nvidia-kernel-common
安裝內核headers
apt-get install linux-headers-`uname -r`
將下載下來的NVIDIA-Linux-x86-1.0-8774-pkg1.run解壓縮:
sh ./NVIDIA-Linux-x86-1.0-8774-pkg1.run --extract-only
進入解壓后的NVIDIA-Linux-x86-1.0-8774-pkg1文件夾,執行安裝:
./nvidia-installer -n --x-prefix=/usr/lib/xorg/
最后由于默認安裝到了/usr/lib/xorg/lig/xorg,需要將文件拷到對應的目錄下:
cp --no-dereference /usr/lib/xorg/lib/xorg/libX* /usr/lib/xorg/modules/
cp /usr/lib/xorg/lib/xorg/modules/drivers/* /usr/lib/xorg/modules/drivers/
cp --no-dereference /usr/lib/xorg/lib/xorg/modules/extensions/* /usr/lib/xorg/modules/extensions/
前天剛裝了個Qt4for windows,發現安裝的時候MySQL等數據庫插件都沒有安裝,像Qt X11版一樣,都需要自己安裝這些插件。
在Qt的安裝目錄C:\Qt4.1.2\下,有個src目錄,進入plugins\sqldrivers\mysql,可以看到兩個文件,main.cpp和mysql.pro,很顯然要用qmake來完成編譯、生成目標。
編譯前,首先保證依賴的MySQL頭文件和庫文件正確。首先MySQL安裝目錄下的include中的所有文件拷到qmake時能找到的目錄下,接著從lib/opt目錄下拷出libmysql.a,其實lib/opt下只有libmysql.lib和libmysql.dll,從網上搜了一下找到一個方法從libmysql.dll生成libmysql.a:
1 、安裝好MySQL (如果不愿意安裝,找個libmySQL.dll文件也可以)
2、下載Pexports工具
3、轉換操作: pexports libmysql.dll > libmysql.def
4、使用MinGW的 dlltool轉換成為libmysql.a文件。dlltool --input-def libmysql.def --dllname libmysql.dll --output-lib libmysql.a -k
5、嘗試是否成功:
將生成的libmysql.a 拷到qmake的lib搜索路徑下后在plugins\sqldrivers\mysql目錄下做:
qmake -project
qmake
make
如果再出現象mysql_connect@xx (xx是數字)的錯誤提示。就執行第6步。
6、修改libmysql.def文件,給mysql_connect加上@xx,即mysql_connect@xx
7、重做第4步
8、然后嘗試第5步,如果還是出現錯誤提示。就作第6步。一直到沒有錯誤為止。
最后C:\Qt4.1.2\plugins\sqldrivers下將會生成需要的libqsqlmysql.a和qsqlmysql.dll。
找了一個測試文件,通過。
#include?<QtSql>?
#include?<QtGui>?


bool?createConnection(){?
QSqlDatabase?db?=?QSqlDatabase::addDatabase("QMYSQL");?
db.setHostName("localhost");?
db.setDatabaseName("test");?
db.setUserName("test");?
db.setPassword("");?

if(!db.open()){?
QMessageBox::critical(0,?QObject::tr("Database?Error"),?
??????????????????????????????db.lastError().text());?

return?false;?
}?

QSqlQuery?query;?
//query.exec("insert?into?book?values(?3,?'title',?'author')?");?
query.exec("select?title?,?author?from?book?");?

while?(query.next())?{?


????QString?title?=?query.value(0).toString();?
????QString?author?=?query.value(1).toString();?

QMessageBox::critical(0,?title,author);?
????
}?


return?true;?
}?



int?main(int?argc,char**?argv){?

QApplication?app(argc,?argv);?
????if?(!createConnection()){?

return?1;?
}?
????????

????return?app.exec();?


}?
