linux编译

arm-linux-gcc 常用参数讲解 gcc编译器使用方法

荒凉一梦 提交于 2019-12-13 22:17:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我们需要编译出运行在ARM平台上的代码,所 使用 的交叉编译器为 arm-linux-gcc 。下面将 arm-linux-gcc 编译工具的一些常用命令参数介绍给大家。 在此之前首先介绍下编译器的工作过程,在 使用 GCC编译程序时,编译过程分为四个阶段: 1. 预处理(Pre-Processing) 2. 编译(Compiling) 3. 汇编(Assembling) 4. 链接(Linking) Linux程序员可以根据自己的需要让 GCC在编译的任何阶段结束,以便检查或 使用 编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为 今后的调试做好准备。和其它常用的编译器一样,GCC也提供了灵活而强大的代码优化功能,利用它可以生成执行效率更高的代码。 以文件example.c为例说明它的用法 0. arm-linux-gcc -o example example.c 不加-c、-S、-E参数,编译器将执行预处理、编译、汇编、连接操作直接生成可执行代码。 -o参数用于指定输出的文件,输出文件名为example,如果不指定输出文件,则默认输出a.out 1. arm-linux-gcc -c -o example.o example.c

Ubuntu下gcc安装及使用

我们两清 提交于 2019-12-13 22:16:58
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在 Ubuntu 下安装 GCC 和其他一些 Linux 系统有点不一样。 方法一: 该方法超简单 : sudo apt-get build-depgcc 就上面这条命令就可以搞定 方法二: sudo apt-get install build-essential 还是简单,一句命令也可以搞定 安装完了可以执行 gcc--version 的命令来查看版本,输出如下: gcc(GCC)4.2.3(Ubuntu4.2.3-2ubuntu7) Copyright(C)2007FreeSoftwareFoundation,Inc. 编译则使用gcc命令。要往下学习首先就得熟悉gcc命令的用法。 gcc命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习其它选项,免得因选项太多而打击了学习的信心。 一. 常用编译命令选项 假设源程序文件名为test.c。 1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。 2. 选项 -o 用法:#gcc test.c -o test 作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。 3.

NUC977 linux和QT环境搭建

有些话、适合烂在心里 提交于 2019-12-13 20:06:09
晕--- 又要开始做linux开发了。又得搭建开发环境了。。新塘给的资料还不错,看着手册就可以。 博客做个流水记录。 搭建基本开发环境 1.下载ubuntu-16.04.5-desktop-i386.iso 最好选择这个版本,最好是i386的版本。因为我就是选的这个。。:) 2. 安装vmware 3.虚拟机安装ubuntu。。很简单都是自动安装的。。第一次安装完以后,重新启动下,VMware tools就可以使用了。然后配置共享文件就可以。 安装一些包: sudo apt install vim sudo apt install u-boot-tool sudo apt install ssh sudo apt install git sudo apt libc6-dev sudo apt libncurses5-dev 4.把官方提供的BSP包拷贝到linux中。 uzip nuc970bsp-release-20170901.zip cd nuc970bsp-release-20170901\BSP tar -xvf nuc970bsp.tar.gz cd nuc970bsp sudo ./install.sh 提示安装路径的时候就写/home/myname 提示从git更新还是本地,就选择本地. 选git从来没有成功过。 安装完成后

linux中config相关文件作用linux defconfig、 .config 、kconfig 与makefile

风格不统一 提交于 2019-12-12 20:00:31
linux defconfig、 .config 、kconfig 与makefile 当驱动文件编写完成之后,需要将其编译进内核uimage或者编译模块(.ko),此时需要修改kconfig 和makefile文件。下面以博通平台为例,阐述下kconfig等文件的用途等,本人水平有限,如有错误之处,请不赐指正。 介绍Kconfig makefile 等文件的文章很多,可以参考:点击打开链接,这里只简单说明。 1.deconfig 文件: 一般由平台厂商提供,内核编译用做.config的参考,注意:如果,缺少该文件,无法进行编译。 文件位于:\kernel\..\arch\arm\configs\xxx_defconfig 2.kconfig 分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成)中。 3.makefile 分布在各个目录下,用于集成编译。 4.config 文件 在内核编译时,主Makefile调用这个.config,用于或者用于的内核编译配置。当我们在内核源码目录下输入make menuconfig时,在出现的菜单界面中选择一项时,它会自动更新

Linux内核编译、安装流程

蓝咒 提交于 2019-12-12 17:02:09
原文链接:https://blog.csdn.net/qq_28437139/article/details/83692907 此处只讲linux内核编译步骤至于安装虚拟机,安装ubuntu操作系统请自行百度 环境信息: Linux操作系统:ubuntu16.04 内核版本:4.15.0-29-generic 需要编译和安装的内核源码版本:4.19 第一步:下载linux内核源码 官网地址地址: https://www.kernel.org/ 官网大致是这个样子,大家关注我标出的位置就OK了 第一列: mainline当前在开发的内核新版本 stable 稳定的内核版本 longterm 长期维护的内核版本 第二列: 版本号以小数点分割 第一个位置主版本号一般有重大改变时会修改的版本号(具有里程碑意义) 第二个位置次版本号偶数代表稳定版本(可商用),奇数代表开发板不稳定(不可商用) 第三个位置这个号码代表当前版本修改次数(每次可能修改一些bug) 第三列: 当前版本最后一次修改代码时间 第四列: tarball:完整的代码 pgp:验证签名 patch:基于上一个版本的补丁(一般商用的系统不会频繁的编译内核,所以可以打补丁上去方便) 在这里我们点击tarball下载完整代码 第二步:上传代码解压,安装软件 登录ubuntu16.04 切换到root权限:su - root

Android/Linux编译开关使用

女生的网名这么多〃 提交于 2019-12-11 12:08:10
1.代码结构 ├── Makefile ├── dependent │ └── test.c └── main.c 2.Makefile $(CC) = gcc CFLAGS:= -Werror -std=c99 ENABLED_TEST:=true #通过控制此开关,达到是否加入自己代码部分 ifeq ($(strip $(ENABLED_TEST)),true) CFLAGS+=-DENABLE_LOG #选择是否编译到源码 endif SRC=./dependent/test.c .PHONY:clean all:main main: main.c $(SRC) @echo $@ @echo $< @echo $^ $(CC) $(CFLAGS) -o $@ $^ clean: rm main 注意:$@:目标文件 $^:依赖所有文件 3.test.c # mkdir dependent # cd dependent # emacs test.c #include <stdio.h> int add(int a, int b){ #ifdef ENABLE_LOG printf("%s(), line = %d, a = %d, b = %d\n",__FUNCTION__,__LINE__,a,b); #endif return (a + b); } 4.main.c

内核编译

喜夏-厌秋 提交于 2019-12-10 19:16:55
最近刚刚开始做内核驱动,记录一下内核编译过程。 1,cd kernel-4.9/ (进入内核源码界面。) 2,./scripts/extract-ikconfig /boot/Image >> tx2_config (生成配置文件。) 3,cp tx2_config .config 4,make menuconfig (make menuconfig图形化界面配置编译器) 在General setup--->(aarch64-linux-gnu-)Cross-compiler tool preflx(添加编译工具版本) 5,make dtbs (编译驱动) 6,Make (编译内核) 来源: CSDN 作者: 夜雨鸦 链接: https://blog.csdn.net/qq_38892528/article/details/103480549

centos 编译程序出现 /usr/bin/ld: skipping incompatible /lib/libc.a when searching for -lc 的解决方法

烂漫一生 提交于 2019-12-10 17:52:04
问题: make: Entering directory `/home/work/hisi/hi3518s1005/osdrv/tools/pc/nand_production/fmc_nand_ecc_product_v100' cc -static -o nand_product nandc_ecc.o oob_config_v100.o main.o nandc_random.o /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../libc.a when searching for -lc /usr/bin/ld: skipping incompatible /lib/libc.a when searching for -lc /usr/bin/ld: skipping incompatible /usr/lib/libc.a when searching for -lc /usr/bin/ld: cannot find -lc collect2: error: ld returned 1 exit status make: *** [nand_product] Error 1 解决: yum install glibc-static libstdc++

静态编译ffmpeg

我只是一个虾纸丫 提交于 2019-12-10 15:31:40
静态编译ffmpeg 这两天折腾了一下完全静态编译ffmpeg,期望通过这种方式实现编译出来的ffmpeg能够在各个linux发现版上运行。进而可以延伸到编译出来完全静态的依赖ffmpeg库的应用程序,从而简化产品在各个linux发行版的产品编译和部署区分,减少开发和维护成本。 经过尝试,最终确实编译出来完全静态的ffmpeg,但是也发现了隐患,具体在"一些问题"中描述。所以,我对完全静态编译持保留意见,需要根据实际的使用情况来定。下面的文字,就是我整理的本次尝试的要点了。 1. 静态编译 首先,查看一下之前编译出来的ffmpeg的动态库链接情况。可以看出它链接了许多动态库,这些库有些是系统自带的,有的需要自己安装。 [root@root tmp]# ldd ffmpeg linux-vdso.so.1 => (0x00007fff133fe000) libm.so.6 => /lib64/libm.so.6 (0x00007fb094f81000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb094d65000) librt.so.1 => /lib64/librt.so.1 (0x00007fb094b5c000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fb094958000)

automake,autoconf使用详解

元气小坏坏 提交于 2019-12-10 14:04:10
作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了. 在本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的 Makefile,这样就可以象常见的 GNU程序一样,只要使用”./configure”,”make”,”make instal”就可以把程序安装到Linux系统中去了. 这将特别适合想做开放源代码软件的程序开发人员,又或如果你只是自己写些小的Toy程序,那么这个文章对你也会有很大的帮助.   一.Makefile介绍   Makefile是用于自动编译和链接的 ,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是 所有的文件都需要重新编译,Makefile中纪录有文件的信息,在 make时会决定在链接的时候需要重新编译哪些文件.     Makefile的宗旨就是 :让编译器知道要编译一个文件需要依赖其他的 哪些文件.当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的 模块.    Makefile的 基本结构不是 很复杂,但当一个程序开发人员开始写Makefile时,经常会怀疑自己写的