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