linux编译

Android原生(Native)C开发

谁说胖子不能爱 提交于 2019-11-27 04:43:42
转载: Android原生(Native)C开发之一 环境搭建篇 转载: Android原生(Native)C开发之二 framebuffer篇 转载: Android原生(Native)C开发之三 鼠标事件篇(捕鼠记) 转载: Android原生(Native)C开发之四 SDL移植笔记 转载: Android原生(Native)C开发之五 zlib移植笔记 转载: Android原生(Native)C开发之六 libpng移植笔记 转载: Android原生(Native)C开发之一 环境搭建篇 2009年02月25日,星期三 Android是基于Linux的操作系统,处理器是ARM的,所以要在Linux或Windows等x86系统上编译Android能运行的程序,你需要一个交叉编译器。 在Linux下面,你可以自已编译一个交叉编译环境,但Windows下面,就比较复杂(也可以在cygwin中编译一个),但你可以选择下载一个现成的交叉编译环境: http://www.codesourcery.com/gnu_toolchains/arm/download.html Windows: http://www.codesourcery.com/gnu_toolchains/arm/portal/package3400/public/arm-none-linux-gnueabi/arm

ccls编译及其在vscode中使用

馋奶兔 提交于 2019-11-27 03:32:39
1. ccls 编译 1.1 下载预编译好的clang+llvm ubuntu 16.04 wget -c http://releases.llvm.org/8.0.0/clang%2bllvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz ubuntu 18.04 wget -c http://releases.llvm.org/8.0.0/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz 1.2 解压clang+llvm tar -xvf clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz 1.3 下载ccls git clone --depth=1 --recursive https://github.com/MaskRay/ccls 1.4 复制相关文件至/usr/local下 cd ccls sudo cp -r * /usr/local 1.5 编译ccls cd ccls cmake -H. -BRelease -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/path/to/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04

Linux内核升级

与世无争的帅哥 提交于 2019-11-26 23:21:15
为了方便起见,可以通过yum的方式进行升级 具体方法参见: http://elrepo.org/ 1、rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 2、rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm 3、yum --enablerepo=elrepo-kernel install kernel-lt 4、编辑开机菜单选项grub文件,需要修改Grub引导顺序,让新安装的内核作为默认内核。 将 default=1 改为 default=0 然后重启机器后,验证是否升级成功中。 ---------------------------------------------------------------------------------------------------- 一、Linux内核概览 Linux是一个一体化内核(monolithic kernel)系统。 设备驱动程序可以完全访问硬件。 Linux内的设备驱动程序可以方便地以模块化(modularize)的形式设置,并在系统运行期间可直接装载或卸载。 1. linux内核 linux操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件

C/C++ 通用 Makefile

假如想象 提交于 2019-11-26 22:59:18
Generic Makefile for C/C++ Program ================================================== Keywords: Makefile, make, Generic, C/C++ Author: whyg linux (whyglinux AT hotmail DOT com) Date: 2006-03-04 ================================================== 本文提供了一个用于对 C/C++ 程序进行编译和连接以产生可执行程序的通用 Makefile。 在使用 Makefile 之前,只需对它进行一些简单的设置即可;而且一经设置,即使以后对源程序 文件 有所增减一般也不再需要改动 Makefile。因此,即便是一个没有学习过 Makefile 书写规则的人,也可以为自己的 C/C++ 程序快速建立一个可工作的 Makefile。 这个 Makefile 可以在 GNU Make 和 GCC 编译器下正常工作。但是不能保证对于其它版本的 Make 和编译器也能正常工作。 如果你发现了本文中的错误,或者对本文有什么感想或建议,可通过 whyglinux AT hotmail DOT com 邮箱和作者联系。 此 Makefile 的使用方法如下:

Bran的内核开发教程(bkerndev)-04 创建main函数和链接C文件

非 Y 不嫁゛ 提交于 2019-11-26 18:53:08
目录 创建main函数和链接C文件 PS: 下面是我自己写的 Win10安装gcc编译器 本节教程对应的Linux下的编译脚本 _main的问题 创建main函数和链接C文件   一般C语言使用main()函数作为程序的入口点, 为了符合我们平时的编程习惯, 这里我们也使用main()函数作为C代码的入口点, 并在"start.asm"文件中添加中断服务程序来调用C函数。   在这一节教程,我们将尝试创建一个"main.c"文件和一个包含常用函数原型的头文件"system.h"。"main.c"中包含mian()函数, 它将作为你C代码的入口。在内核开发中, 我们一般不从main()函数返回。多数操作系统在main中初始化内核和子程序、加载shell, 然后main函数会进入空循环中。在多任务系统中, 当没有其他需要运行的任务时, 将一直执行这个空循环。下面是"main.c"文件的示例,其中包含了最基本的main()函数和一些我们以后会用到的函数体。 main.c #include <system.h> /* 你将要自己完成这些代码 */ unsigned char *memcpy(unsigned char *dest, const unsigned char *src, int count) { /* 在此处添加代码, 将'src'中count字节的数据复制到'dest'中,

GCC使用【转】

你说的曾经没有我的故事 提交于 2019-11-26 18:34:53
原文: http://blog.163.com/tyw_andy/blog/static/11679021201031582826251/ GCC使用 by Jian Lee GCC的选项 如何指定GCC的默认头 文件路径 Linux系统的头文件 和库文件搜索路径 头文件 库文件 运行时动态库的搜索路径 GCC的选项 -c 只生成目标文件(.o),不连接。 % gcc -c main.c % g++ -c reciprocal.cpp -I 可以指定头文件的目录 % g++ -c -I ../include reciprocal.cpp -D 设置宏定义 % g++ -c -D NDEBUG reciprocal.cpp % g++ -c -D NDEBUG=3 reciprocal.cpp -O 优化级别,默认优化级别是2 % g++ -c -O2 reciprocal.cpp -o 连接程序,生成可执行 如何指定GCC的默认头文件路径 有大量的环境变量可供设置以影响 GCC 编译程序的方式。利用这些变量 的控制也可使用合适的命令行选项。一些环境变量设置在目录名列表中。 这些名字和 PATH 环境变量使用的格式相同。特殊字符 PATH_SEPARATOR (安装编译程序的时候定义)用在目录名之间。在 UNIX 系统中,分隔符是冒号,而 Windows 系统中为分号。 C

Scons学习【转】

一世执手 提交于 2019-11-26 18:33:55
scons 学习 作者:Sam(甄峰) sam_code@hotmail.com http://www.scons.org/ Sam有个好朋友是做游戏的,整天嘲笑做嵌入式的用的工具多土多原始。gdb不是图形化,DDD又没VC调试好用,只会写Makefile等等。 刚好最近有需要使用scons。所以Sam准备学习之以回击这种挑衅。呵呵。 scons简介: scons是一个Python写的自动化构建工具,从构建这个角度说,它跟GNU make是同一类的工具。 scons与其它工具最显著的差别就是:scons配置文件是Python script. 它的思想是跟GNU make完全不同的。GNU make的核心是“依赖关系”,我要做的事情,就是告诉系统,一个目标依赖什么东西,并且,当被依赖的东西发生变化时,我要做什么。 例如: all: main.c $(CC) $(CFLAGS) $(LFLAGS) main.c -o BT_remote -lbluetooth -lBluetooth_remote -lm -lpthread 意思是:all依赖于main.c。 如果main.c有了变化,作下面这些事。 这样做可以解决相当多的问题,但是也带来了一个最大的问题:我如何判别这个目标依赖什么? 对于一个两个,甚至十几个文件,我当然还比较容易搞清楚,谁依赖谁。但是当文件有成百上千个时

在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1

假如想象 提交于 2019-11-26 17:59:03
目录 一 安装前的准备 二 编译并安装OpenCV 4.1.1 注:原创不易,转载请务必注明原作者和出处,感谢支持! OpenCV目前(2019-8-1)的最新版本为4.1.1。本文将介绍如何在Ubuntu 16.04 LTS下编译安装最新的OpenCV 4.1.1版本以及4.1.1对应的contrib库。 一 安装前的准备 (1) 一台Ubuntu 16.04 LTS操作系统。选择速度快的国内更新源并更新系统 sudo apt-get update sudo apt-get upgrade (2) 安装最新版本的cmake-gui 进入 cmake.org 下载最新版本的cmake源代码,使用下面的命令安装。 解压: tar -zxvf cmake-3.15.2.tar.gz 先安装cmake(Ubuntu软件库中的旧版cmake): sudo apt-get install cmake 编译并安装最新版本cmake: cd cmake-3.15.2/ mkdir build cd build cmake .. make # 使用make -j,虚拟机有卡死的风险 sudo make install cmake源码安装之后是没有GUI的,要安装cmake-gui,还需要安装cmake-qt-gui sudo apt-get install cmake-qt-gui (3) 下载

EDK2开发环境搭建

房东的猫 提交于 2019-11-26 17:19:43
EDK2开发环境搭建 来源 https://blog.csdn.net/rikeyone/article/details/80759724 EDK2全称为“uEFI Development Kit”,是intel开源的一套符合UEFI标准的实现。 edk2环境搭建 代码下载 git clone https://github.com/tianocore/edk2.git 安装编译环境 sudo apt-get install build-essential uuid-dev nasm edk2编译:命令行编译 1.编译base tool export WORKSPACE=dir/to/edk2 make -C $WORKSPACE/BaseTools 2.初始化编译环境 cd $WORKSPACE source envsetup.sh 3.命令行编译platform pkg build -p $WORKSPACE/EmulatorPkg/EmulatorPkg.dsc -a X64 -b DEBUG -t GCC48 -D BUILD_64 -D UNIX_SEC_BUILD -n 3 option说明: -p PLATFORMFILE: 目标平台描述文件 -a TARGETARCH: 目标平台X64/IA32 -b BUILDTARGET: 可选项(DEBUG, RELEASE,

linux:lnmp环境搭建

帅比萌擦擦* 提交于 2019-11-26 15:06:45
一、准备工作(把安装环境需要使用到的包都下载好)    mysql (官网): http://dev.mysql.com/downloads/    php (官网): http://php.net/downloads.php    nginx (官网):http://nginx.org/;选择稳定版本(Nginx 有很多种版本 , 比如 mainline( 主线版 ),stable( 稳定版 ))    下载mysql、php、nginx的教程:http://www.cnblogs.com/zengguowang/p/5812999.html    还要其他的一些依赖包需要童鞋们去一个一个寻找并下载,下面是写一些依赖包的解释:      libxml :是一个用来解析 XML 文档的函数库(用C语言写的)      libmcrypt :加密算法扩展库,支持DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SAFER+等算法      mhash :hash是基于 离散数学 原理的不可逆向的php加密方式扩展库,其在默认情况下不开启。mhash的可以用于创建校验数值,消息摘要,消息认证码,以及无需原文的关键信息保存(如密码)等      mcrypt :mcrypt 是 php