A. 執行qmke時出錯,特來求教
1 編譯階段,執行的是對單個文件的轉換,從源代碼轉換成二進制文件。2
鏈接階段,將每個源文件轉成的二進制文件,及相關的系統庫文件共同打包生成可執行文件。3 從定義上可以看出,鏈接階段,出現錯誤有兩種可能:1)
函數中引用了不存在的函數。2) 編譯環境有問題,導致ld出錯。
B. 如何在aix環境下生成動態鏈接庫
libwrapper.so: $(libwrapper_so_OBJECTS)
@echo ${COMPILE}
@echo $(libwrapper_so_OBJECTS)
${COMPILE} -shared $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
# ${COMPILE} -qmkshrobj $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
在linux下編譯沒有問題,但是在AIX下編譯會報如下錯誤
xlc -DAIX -c -I/usr/java14/include -I/usr/java14/include/aix wrapperinfo.c
xlc -DAIX -shared wrapperjni_unix.o wrapperinfo.o wrapperjni.o -o ../../lib/libwrapper.so
ld: 0706-012 The -h flag is not recognized.
ld: 0706-012 The -a flag is not recognized.
gmake: *** [libwrapper.so] Error 255
百思不得其解,網上一查,很多類似情況,但都沒有解決方法,最後試著將Makefile修改如下
libwrapper.so: $(libwrapper_so_OBJECTS)
@echo ${COMPILE}
@echo $(libwrapper_so_OBJECTS)
# ${COMPILE} -shared $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
${COMPILE} -qmkshrobj $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
編譯通過,問題解決。
現在來想,可能是AIX下生成動態庫使用的編譯器選項為-qmkshrobj,而不是-shared造成的。
至於報-h和-a選項標識錯誤,估計是連接器不認識-shared選項,故而當作-s,-h,-a,-r,-e,-d選項來對待,
而恰巧支持-s,-r,-e選項,而不支持-h,-a選項,所以出現該錯誤。
C. 執行qmke時出錯,特來求教
1 編譯階段,執行的是對單個文件的轉換,從源代碼轉換成二進制文件。2 鏈接階段,將每個源文件轉成的二進制文件,及相關的系統庫文件共同打包生成可執行文件。3 從定義上可以看出,鏈接階段,出現錯誤有兩種可能:1) 函數中引用了不存在的函數。...
D. promicro 刷qmk失敗
刷機前請將刷機工具上面的DA DL ALL WITH CHECK SUM勾上刷一遍即可
解決辦法:(http://pan..com/s/1i3eKPxz)
報錯1002
解決辦法:換刷機工具!
報錯1003
解決辦法:換平台,建議換共享6752最新平台刷!
報錯1011
解決辦法:平台錯誤,換對應MTK刷機平台!fat文件不勾選即可。
報錯1012
解決辦法:實戰換尾插解決!
報錯1013
解決辦法:打開埠失敗,重新聯機或者拔掉數據線換個USB插口即可!
報錯1014
解決辦法:資料CPU不對,如6577刷成6575的資料,換資料解決!
報錯1018
解決辦法:基帶加密,換原廠加密刷機工具!
報錯1022
解決辦法:1、刷機軟體版本和手機不匹配,換刷機工具!2、數據線,電腦介面等也會引起!
E. pro文件和pri文件
QT中,qmake為編譯工具,通過qmke可以生成一個makefile文件,這就和pro文件有關,下面介紹pro文件的寫法:
TELEPLATE :模板
app:默認不寫時為app,即應用程序的makefile。
lib :建立一個庫的makefile。
TARGET:生成應用程序名
CONFIG:配置信息
CONGIF += qt warn_on release
分別意思是,告訴qmake這個應用程序是使用QT連編的,這就是說qmake再連接和為編譯添加所需要的包含路徑的時候會考慮到用qt庫。warm_on告訴qmake要把編譯器設置為輸出警告信息的。release告訴應用程序必須被連編成一個發布版本。開發過程中可設置為也可以為debug版本。
INCLUDEPATH:頭文件包含路徑
CODECFORSRC = gbk :源文件編碼方式
#工程中的源文件和頭文件
SOURCES +=
HEADERS +=
RESOURCES += qrc/painter.qrc // 工程中包含的資源文件
FORMS += forms/painter.ui // 工程中包含的ui設計文件
LIBS += -l(庫名)
#平台相關
win32 {
SOURCES += hello_win.cpp
}
unix{
LIBS +=-lcur3
}
如果項目工程大文件多:
可以將SOURCES,HEADERS ,FORMS單獨拿出來放到單獨一個test.pri文件中,然後在pro文件中用 include(test.pr)進行管理。
pro文件中$和$$符號含義和用法:
包含pri文件:
自定義變數 :
BASEDIR = .. /.. /.. /.. /
include ( $$ { BASEDIR } pri / common.pri )
include ( $$ { BASEDIR } pri / baseapk.pri )
INCLUDEPATH += $$ { BASEDIR } include
INCLUDEPATH += $$ { BASEDIR } include / forecastbusiness
自定義變數:
myVersion = 1.2
TARGET = software $$ { myVersion }
FILE = main.cpp
SOURCES += $$ FILE
重新qmake 後正確生成目標程序為software1.2的工程。
F. 執行qmke時出錯,特來求教
1 編譯階段,執行的是對單個文件的轉換,從源代碼轉換成二進制文件。2 鏈接階段,將每個源文件轉成的二進制文件,及相關的系統庫文件共同打包生成可執行文件。3 從定義上可以看出,鏈接階段,出現錯誤有兩種可能:1) 函數中引用了不存在的函數。2) 編譯環境有問題,導致ld出錯。
G. 怎麼在aix里編譯.sql文件
先檢查你的編譯器是什麼編譯器: 看是gcc還是cc,下面是cc版本的 編譯成32位版本: cc -q32 -qmkshrobj -o XXXXXX.so XXXXXX.c 編譯成64位版本: cc -q64 -qmkshrobj -o XXXXXX.so XXXXXX.c
H. 求教:aix下動態鏈接庫*.so文件如何編譯出來
先檢查你的編譯器是什麼編譯器:
看是gcc還是cc,下面是cc版本的
編譯成32位版本:
cc -q32 -qmkshrobj -o XXXXXX.so XXXXXX.c
編譯成64位版本:
cc -q64 -qmkshrobj -o XXXXXX.so XXXXXX.c