1、首先,点击“文件”——“新建文件或项目”。
2、在d出的界面中选择”其它项目“——”empty qmake project"。
3、在新d出的窗口中选择项目保存的目录。设置完成。
4、如果是运行于安卓手机,可以选择一个安卓模拟器。
5、点击”文件“——”新建文件或项目“,在d出的窗口中选择”c++",右侧选择C++ source file(c++源文件)。
6、选择文件保存的位置。
7、选择添加到上面建立的hello world工程中。
8、编写、构建并运行hello world。
9、然后点击”构建“——”构建helloworld"。
10、最后,点击左侧的”运行“按钮,运行程序即可。
用户程序insmod核心模块加载:具体如下:核心模块编译完成后,基本上是个未经符号定位的目标文件(object)(当然,如果这个object又是一些子object经过ld-r生成的话,则子object之间的符号定位是已经完成的),object是一种可重定位的代码,它可以加载到不同位置的内存执行。而真正加载进核心,并成为核心的一部分,则是用户程序insmod和核心几个系统调用共同完成的。在此过程中,insmod主要完成或通过系统调用完成以下的工作:1)由参数找到模块文件,如insmodfoo.o,模块文件就是foo.o,根据模块文件计算出模块文件所需的内存大小2)调用系统调用create_module,为该模块分配核心空间内存3)调用系统调用query_module,得到核心提供的符号表,与系统调用create_module的返回值(核心模块首地址)加在一起对模块进行重定位。4)在用户空间为核心模块分配内存,并往该段内存复制一个经过定位的object映象。5)调用系统调用init_module,将用户内存中的模块映象copy到相应的核心空间(首地址为create_module的返回值)。6)释放用户内存,中止insmod运行。如果一切顺利,没有出现未定位的符号,则核心模块object就融入系统,成为系统的一部分了。核心模块的加载过程对核心来说实际是个“静态链接”的过程,这和用户程序动态链接运行过程再链接需要的代码还是不太一样的,当然,object的可重定位特性保证了链接后的代码正常运行,这点倒是比较相似的。有个这类 QProcess
QProcess p(0)QString command = ""
QStringList args
QString strTemp = ""
QStringList tmpList
/**
* 调用 hostname 命令 获取机器名
================================================================ */
QString hostname = ""
command = "hostname"
args.clear()
p.start( command,args )
p.waitForFinished()
strTemp = QString::fromLocal8Bit( p.readAllStandardOutput() )
hostname = strTemp.replace( "\n","").trimmed()
qDebug()<<"hostname:"<< hostname
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)