linux编译

Linux编译笔记

久未见 提交于 2019-11-30 10:20:50
3. 设备树, Linux 获取Linux源码(zero-4.13.y分支对网卡支持比较好): git clone https://github.com/Lichee-Pi/linux.git -b zero-4.13.y 生成荔枝派Zero 默认配置文件: CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm make licheepi_zero_defconfig 设备树文件(默认不需要修改): arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dts 编译内核: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 编译设备树: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs    来源: https://www.cnblogs.com/guanglun/p/11578398.html

2019-2020-1 20175227 《信息安全系统设计基础》第三周学习总结

若如初见. 提交于 2019-11-30 06:29:04
2019-2020-1 20175227 《信息安全系统设计基础》第三周学习总结 教材学习内容总结 GCC GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。 GCC编译代码的过程如下: 可以把编译过程分成四步,以编译hello.c生成可执行文件hello为例,如下图: 预处理: gcc –E hello.c –o hello.i gcc –E调用cpp 编 译: gcc –S hello.i –o hello.s gcc –S调用ccl 汇 编: gcc –c hello.s –o hello.o gcc -c 调用as 链 接: gcc hello.o –o hello gcc -o 调用ld GDB UNIX及UNIX-like下的调试工具。GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。 功能 启动程序,可以设置运行环境和参数来运行指定程序 让程序在指定断点处停止执行 对程序作出相应调整,这样就能纠正一个错误后继续调试 注意使用 -g 编译选项的gcc命令来编译源程序 命令 Makefile 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译

Linux 下编译安装OpenCV

给你一囗甜甜゛ 提交于 2019-11-30 05:58:52
原文地址:http://www.cnblogs.com/emouse/archive/2013/02/22/2922940.html Cmake的安装 OpenCV 2.2以后版本需要使用Cmake生成makefile文件,因此需要先安装cmake。 ubuntu下安装cmake比较简单, apt-get install cmake 如果觉得自带的版本不符合要求,可以下载安装包。 下载最新版的安装包: http://www.cmake.org/cmake/resources/software.html 这里下载已经编译好的,这样只需要解压至需要的目录下即可使用: tar zxvf cmake-2.8.10.2-Linux-i386.tar.gz –C /usr/local/ 设置环境变量: sudo gedit /home/emouse/.bashrc 在打开的文件后添加: export PATH=$PATH:/usr/local/cmake-2.8.10.2-Linux-i386/bin 查看版本,测试是否安装成功: root@emouse:/home# cmake --version cmake version 2.8.10.2 Ubuntu 下安装 OpenCV 软件环境: Ubuntu 12.04 OpenCV 2.4.3 Cmake 2.8.10.1 gcc 4.6.3

编译选项

谁都会走 提交于 2019-11-30 05:39:17
arm-linux-gcc选项 一个c文件要经过预处理、编译、汇编和连接等4步才能那个变成可执行文件。 预处理:   以#号开头的命令被称为预处理命令,如包含命令#include、宏定义命令#define、条件编译命令#if, #ifdef等。预处理就是将要抱哈那个的文件插入源文件中、 将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些代码输出到一个“.i”文件中等待进一步处理 。预处理将用到arm-linux-cpp工具 编译:   编译就是代码翻译成汇编代码,比如上述的“.i”文件。所用到的工具是ccl 汇编:   汇编就是将编译阶段输出的汇编代码翻译成符合一定格式的机器代码,在linux系统能够上面一般表现为 ELF目标文件(OBJ文件),用到的工具为arm-linux-as 连接:   链接就是将上述生成的OBJ文件和系统库OBJ问年连接起来,最终生成可以在特定平台运行的可执行文件 , 用到的工具为arm-linux-ld 对于arm-linux-gcc    加上-v选项,可以观看编译的细节   -c 预处理、编译和汇编源文件,但是不做链接,编译器根据源文件生成OBJ文件。   -S 编译后即停止,不进行汇编   -E 预处理后即停止,不进行编译。   -o file 指定输出文件为file arm-linux-ld用于将多个目标文件、库文件连接成可执行文件。

Win10编译Mingw

妖精的绣舞 提交于 2019-11-30 03:53:42
准备工具 Windows平台 cmake mingw-x64 Linux平台(Ubuntu) sudo apt-get install git cmake cmake-gui -y 下载源码 建议直接下载我是用的源码,下面是源码列表。 版本 地址 OpenCV 3.4.5 https://mirrors.lucoder.com/?/opencv/dist/3.4.5/opencv-3.4.5.zip https://mirrors.lucoder.com/?/opencv/dist/3.4.5/opencv_contrib-3.4.5.zip 如果你下载官方的源码,那么修改源码中的CDN地址: https://mirrors.lucoder.com/opencv ,目前CDN支持OpenCV 3.3~3.45。 搜索 ocv_download (建议使用Visual Studio Code),修改链接内容: https://raw.githubusercontent.com #修改为 https://mirrors.lucoder.com/?/ 只需要修改地址即可,其他的都不用修改,比如下面的链接。 "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${OPENCV_3RDPARTY_COMMIT}/" "https

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

故事扮演 提交于 2019-11-30 03:19:45
创建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'中, * 最后返回'dest' */ } unsigned char *memset(unsigned char *dest, unsigned

阿里云服务器内核编译升级

孤街浪徒 提交于 2019-11-30 01:35:33
阿里云服务器被黑,植入了挖矿程序,所以升级下服务器内核: 下载一个Linux内核: https://www.kernel.org/ 将下载的内核(我下载的是 linux-5.2.15.tar.xz ),上传到阿里云服务器( /media 文件夹下),解压并进入解压文件夹下(解压命令: tar -xvf linux-5.2.15.tar.xz ) 编译内核: uname -a 或者 uname -r 检测一下自己内核的版本。 进入解压目录里,使用 make menuconfig 进行菜单式内核配置。 出现错误如下图所示: 解决: sudo yum install libncurses-dev 。继续 make menuconfig 。 解决: sudo yum install flex 。继续 make menuconfig 。 解决: sudo yum install bison 。继续 make menuconfig 。 弹出下面这个界面如下图,编译内核的第一步结束: 点 save ,然后 ok ,然后 exit ,再 exit 退出这个界面。 配置内核之后,现在开始第二步,直接 make 进行编译。 出现错误如下图: 解决: sudo yum install libelf-dev 或者 sudo yum install libelf-devel 或者 sudo yum

GCC常用 编译命令

寵の児 提交于 2019-11-29 23:56:37
原文:https://blog.csdn.net/bible_reader/article/details/80210880 一. 常用编译命令选项 假设源程序文件名为test.c。 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。 选项 -o 用法:#gcc test.c -o test 作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。 选项 -E 用法:#gcc -E test.c -o test.i 作用:将test.c预处理输出test.i文件。 选项 -S 用法:#gcc -S test.i 作用:将预处理输出文件test.i汇编成test.s文件。 选项 -c 用法:#gcc -c test.s 作用:将汇编输出文件test.s编译输出test.o文件。 无选项链接 用法:#gcc test.o -o test 作用:将编译输出文件test.o链接成最终可执行文件test。 选项-O 用法:#gcc -O1 test.c -o test 作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。 二. 多源文件的编译方法 如果有多个源文件,基本上有两种编译方法: [假设有两个源文件为test

QT 程序window下边编译好后如何移植到嵌入式目标板运行

徘徊边缘 提交于 2019-11-29 23:38:27
一般来讲,windows开发好的程序,要移植到Linux下边,主要是Makefile编写,Makefile 里边主要的是要指定编译器。 1.新建项目文件夹。把源码放在文件夹中 2.$qmake -project //生成.pro文件 3.qmake //生成Makefile 这里边是用qmake 产生了工程文件, qmake 就是你在Linux上边安装QT环境所在的bin目录,比如我的路径是:/opt/qt-4.7.1/bin/qmake 最终生成Make,里边看到有指定编译器: CC = arm-linux-gcc CXX = arm-linux-g++ 如果是你 想用特定的编译器,那就在这里指定好了。‘ 交叉编译环境搭建的时候是需要把arm支持的gcc 放到Linux里边,比如我用的toolchain是这个gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12,然后export一下让他生效,这个时候bin下边的工具gcc g++ 就可以在全局环境下找到。export PATH=$PATH: /usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linarotoolchain/bin 我的代码由于之前已经配置好了 arm 的编译环境,我输入arm 的时候

UPX为APK加壳中.init段相关问题

隐身守侯 提交于 2019-11-29 23:16:19
感谢UPX的维护者们.最近在读UPX源码,目的是为.so文件加壳玩. 在此之前阅读了大部分我能搜到的中文相关内容.很多语焉不详,所以综合了一下,编译出了Linux下的版本. 本文简单说明了以下内容: 为什么一些.so在新版编译的UPX中压缩无法通过. .init段的一些简单探索 编译UPX 你可以参考这里,step by step. Android NDK UPX加固 作者:fallrain 无法编译的一点情况 UPX最新版d9e7cb4b5485用VS编译会报错-无法识别的导出符号.另外还有一些问题,动态结构体数组不能直接声明.需要动态申请.这都是小问题,根据报错信息很容易解决.真正的关键在于对于加壳.so动态链接库会提示无法识别的文件格式.当前我还没有在windows平台编译成功最新版. 编译的小科普 源代码如果跨平台,通过不同的编译选项可以编译成不同平台的程序. 功能不变. 无法加壳 我编译成功UPX的Linux版后,发现加壳Android上的.so动态链接库文件会报 “未知文件格式” .在使用一定数量的不同类型.so后.认为要么UPX压缩.so的传言为虚,要么我们的.so文件统统有问题. .init 多篇网文反复提到UPX只能压缩具有该”区段”的内容. UPX区分格式的方法 压缩可执行程序肯定不能像压缩软件那样直接一套通用算法就能搞定,得针对不同格式做出相应安排,