linux编译

DirectFB编译环境

元气小坏坏 提交于 2019-11-29 21:42:40
DirectFB是用于嵌入式平台的一个2D图形库,主要面向嵌入式平台。不过,也支持在PC平台进行开发,测试相关功能,只要对应的Linux支持FrameBuffer设备。 本文以DirectFB源码自带的例子的编译介绍编译环境的搭建,使用版本为1.2.9 使用CMake作为编译工具。 由于CMake默认并没有定义查找DirectFB头文件以及库的module,所以我们必须首先定义查找DirectFB的Find模块,该模块名我们设定为:FindDirectFB.cmake. 文件内容如下: # try to find directfb.h set(HEADER_SEARCH_PATHS "/usr/include/directfb" "/usr/include/directfb-internal") find_path( DFB_INCLUDE_DIRS directfb.h PATHS ${HEADER_SEARCH_PATHS} NO_DEFAULT_PATH ) if(NOT EXISTS ${DFB_INCLUDE_DIRS}) find_path(DFB_INCLUDE_DIRS directfb.h) endif() # try to find the DFB library find_library( DFB_LIBRARIES NAMES directfb PATHS

C++编辑编译链接运行

痴心易碎 提交于 2019-11-29 21:23:52
  从写一个简单的“hello world!”到完成一个大型程序,当程序从编辑完成到执行成功都会经过5个步骤,分别是预处理(Prepressing)、编译(Compilation)、汇编(Assembly)、链接(Linking)和执行(Executing)。了解这五个过程中所做的工作,对我们理解头文件、库文件等在程序中的作用是有帮助的,而且如果能够清楚的了解编译链接过程,在编程时定位错误,纠正错误,以及编程时手动调整编译器以通过调试有很大帮助。 1.预处理 预处理器,进行预处理。预处理过程主要处理那些源代码文件以“#”开始的预编译指令。比如“#include”、“#define”和条件预编译指令,如“#if”、“#ifdef”等。预处理时,将所有的“#define”删除,展开所有的宏定义,并且替换掉“#include”。    (1)宏定义指令 ,如#define a b。对于这种伪指令,预编译所要做的是将程序中的所有a用b替换,还有#undef,则将取消对某个宏的定义,使以后该串的出现不再被替换。    (2)条件编译指令 ,如#ifdef,#ifndef,#else,#elif,#endif等。这些伪指令的引入使得程序员可以通过定义不同的宏来决定编译程序对哪些代码进行处理。预编译程序将根据有关的文件,将那些不必要的代码过滤掉。    (3) 头文件包含指令 ,如

Debian编译内核教程

空扰寡人 提交于 2019-11-29 19:44:19
个人拼凑 基本方法 先是获取内核源码 方法1、内核官网下载内核 官网: 在 kernel 的官网上有三种版本,mainline,stable,longterm mainline 是主线版本,最新的,像 linux-3.7 或是 3.8-rc1 stable 是稳定版,像 linux-3.7.1 longterm 是长期支持版,目前官网上是 2 个,3.0,3.4,再加一个后娘养的 3.2 还有一个是 eol,当然就是不再支持了,3.5.3.6 就是 eol 了 选那个随便 建议稳定版 方法2、是用git ,git 的优点是取出很快,不用打补丁,缺点是第一次比较慢 稳定版 git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git 老大版 git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 先装上 git-core 这个软件包 一般默认是 master 这个分支,当然大家可以查看远程分支 git branch -r 取出的话,可以看根据上面的版本 然后 git checkout 你要的版本 下次更新 直接 git pull,包下载,包整合,如果是整合失败再手工整合,几率比较小

源码安装中 configure make make install 的作用

懵懂的女人 提交于 2019-11-29 19:33:38
1、 configure ,这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制 例如: ./configure --prefix=/usr 意思是将软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在/usr/share(而不是默认的/usr/local/share),同时一些软件的配置文件你可以通过指定 --sys-config= 参数,进行设定 有一些软件还可以加上 --with、--enable、--without、--disable 等参数对编译加以控制,可以通过 ./configure --help 察看帮助详情 2、 make ,这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。如果在make 过程中出现 error ,要记下错误代码(注意不仅仅是最后一行),然后可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。 make 的作用是开始进行源代码编译,以及一些功能的提供, 这些功能由他的 Makefile 设置文件提供相关的功能,比如 make

Ubuntu10.04上编译Android源码(Build Android source in...

不羁的心 提交于 2019-11-29 17:34:53
一、Introduction 今天我们就来谈谈如何在Ubuntu平台上面编译android源码,我的是ubuntu10.04版本,在进行编译流程讲解之前我想讲一下 make 、make snod 、make kernel的作用,m、mm、mmm它们的作用以及区别。 - make: 编译源码,生成相应的系统镜像文件。 - make snod: 重新生成一个system.img系统镜像文件 - make kernel: 编译内核(可选)一般根据envsetup.sh文件内容而论 - m: Makes from the top of the tree(编译全部模块)。 - mm: Builds all of the modules in the current directory(编译当前目录下的所有模块)。 - mmm: Builds all of the modules in the supplied directories(编译指定目录下的所有模块)。 二、 编译Android source以及SDK 2.1、完全编译 使用make编译并生成镜像 ~$: cd ~/android/src ~$: make 映像编译成功后会在目录 ~/android/src/out/target/product/generic 下产生一些image文件 ramdisk.img system.img

makefile 一看就懂了

眉间皱痕 提交于 2019-11-29 16:32:03
前言:没接触Linux下编译之前,觉得很神秘,特别是makefile,一个简单的make命令就能编译一个大型项目生成一个可执行文件,接下来跟大家分享下学习的makefile的知识。 目录: 1.makefile简介 2.makefile规则 3.makefile隐晦规则 4.makefile伪目标 5.makefile变量 6.makefile条件控制语句 7.makefile文件引用 8.makefile函数 9.makefile注释,换行,-f 10.makefile动手实践 1.makefile简介 首先,我们通常使用的make都是gnu make,也就是一种解析makefile的make工具,关于gnu和Linux还有一段不为人知的故事,大家可以自己查下。makefile就是一个文档,make工具通过解析这个文档,把一个个.c .cpp文件通过gcc/g++命令编译成.o(临时文件 Object file),再通过gcc/g++命令编译成一个二进制的可执行文件,也可以将.o文件链接成一个.a(静态链接库,Windows下为.lib)。 2.makefile规则 makefile接触最多的一个词就是目标,它可以是一个可执行文件,.o,伪目标。makefile编译就是把最终生成的可执行文件这个目标,依赖其他的目标,一层层依赖,最终依赖到.c,.cpp文件。另外

gcc 与 g++的区别

半腔热情 提交于 2019-11-29 14:51:47
原文: http://www.cnblogs.com/wb118115/p/5969775.html ------------------------------------------------------------------------------------ 看的Linux公社的一篇文章,觉得不错,内容复制过来了。 其实在这之前,我一直以为gcc和g++是一个东西,只是有两个不同的名字而已,今天在linux下编译一个c代码时出现了错误才找了一下gcc和g++的区别。 先描述一下今天遇到的错误: 因为以前写程序的时候,写的都是cpp文件,然后就直接使用g++编译,没出错,也就没有在意过这些问题,今天有一个c文件,但里面包含后STL中的vector语法,想着使用gcc来编译,结果报错了,报错是:找不到vector。 什么是gcc / g++ 首先说明:gcc 和 GCC 是两个不同的东西 GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。 gcc是GCC中的GUN C Compiler(C 编译器) g++是GCC中的GUN C++ Compiler(C++编译器) 一个有趣的事实就是,就本质而言,gcc和g++并不是编译器,也不是编译器的集合

从C++到Qt(舍弃IDE或qmake、cmake等工具的束缚,尝试通过几个例子)

烈酒焚心 提交于 2019-11-29 10:29:39
Qt 是 C++ 的库,Qt 在 ansi C++ 的基础上进行了一点扩展。 但国内似乎比较浮躁,学Qt的很多连基本的C++如何编译似乎都不太清楚。 本文舍弃IDE或qmake、cmake等工具的束缚,尝试通过几个例子,一步一步从标准 C++ 的编译过渡到 Qt 的编译。 本文涉及的都是最基本的东西,或许可以说,只要你用C++ Qt,不管是通过哪种工具(qmake、cmake、boost.build、qtcreator、vs2008、Eclipse、...),本文的内容都是需要理解的(尽管真正写程序时,我们都不会直接用C++编译器来编译Qt程序)。 如果你对命令行比较恐惧,或许愿意先看看我原来整理的这个 GCC新手入门 例子一:简单的控制台程序 一个很简单的例子,没用到Qt扩展:(也就是说,这是一个普通的C++程序) #include <QtCore/QCoreApplication> #include <QtCore/QDebug> int main(int argc, char** argv) { QCoreApplication app(argc, argv); qDebug()<<"hello qt!"; app.exec(); } 我们都知道,编译一个C++的程序,无非是 编译预处理,编译、链接 编译预处理器:头文件路径 和 必要的宏 编译器:一些编译参数 链接器

【QT】介绍qmake编译QT程序(执行qmake报错:qmake: could not exec '/usr/XX/bin/qmake': No such file or directory )

这一生的挚爱 提交于 2019-11-29 10:19:46
注意:这里介绍的qmake编译不包括在Linux上使用命令写QT文件,前提是所有的qt文件均已写完.(命令执行在代码路径下) 需要在目录 cd /usr/bin 下输入: (1)先判断Linux中qmake是否存在可用. qmake -v 报错: qmake: could not exec '/usr/lib/i386-linux-gnu/qt4/bin/qmake': No such file or directory (2)如果出现报错,则需要设置一下.没有报错执行(3) (2.1)一般为qtchooser默认选择路径中没有指向qmake路径. (2.2)查找qtchooser的配置文件: 会退到usr的当前目录下查找: cd usr 找到对应的qtchooser/default.conf文件,直接修改文件:./lib/i386-linux-gnu/qt-default/qtchooser/default.conf vim ./lib/i386-linux-gnu/qt-default/qtchooser/default.conf 注:如果是64位的Ubuntu,一般文件是 ./lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf 添加将里面第一行替换自己已经安装的qmake. (Esc按键退出, :wq保存) /usr

QtCreater添加外部库编译error: C1083: 无法打开包括文件: “openssl/pkcs12.h”: No such file or directory原因分析

烈酒焚心 提交于 2019-11-29 10:18:36
QtCreater编译找不到文件的原因解析 QtCreater中,要添加某一个库或库文件,当一切条件都成立的条件下且文件都存在,添加路径正确: 添加了头文件:#include “openssl/asn1.h” 修改了.pro文件, 给INCLUDEPATH += F:/openssl/include. 然后去编译,发现仍然见鬼的编译不通过: error: C1083: 无法打开包括文件: “openssl/pkcs12.h”: No such file or directory. 然后任凭怎么修改都不行的。折腾了半天后终于明白了: 你必须运行qmake(build-> run qmake)来验证pro文件中的更改。 为什么?qmake做什么? qmake将.pro文件编译成一个Makefile,它告诉你的编译器套件(例如gcc,clang或msvc)如何编译这个项目。 就是因为这个原因,所以每次凡是有.pro文件的修改,那么必须运行qmake重新生成makefile文件才能让编译器重新编译,否则,你改变了.pro文件,然后去编译, 发现编译仍然通过了,这就有点见鬼了,去编译输出看一下,提示: 16:14:16: 进程”C:\Qt\Qt5.6.0\Tools\QtCreator\bin\jom.exe”正常退出。 16:14:16: 配置没有改变, 跳过 qmake 步骤。 16