linux编译

MakeFile学习(一)

天大地大妈咪最大 提交于 2019-11-28 16:45:47
概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

在Ubuntu上下载、编译和安装Android4.0.3 source与 kernel 源码

徘徊边缘 提交于 2019-11-28 12:13:04
首先要注意的是:在进行环境变量的 配置或者涉及到跟目录有关的操作时一定要注意你自己的目录是什么,你自己的android source放在哪个目录下,不要完全copy我的PATH的路径 。 说明 :home/dell/ WORKING_DIRECTORY --我所有的android源码都放在这个目录中,而且还在这个目录下建立了一个kernel目录,将内核源码放在里面。即,我的内核目录是:home/dell/WORKING_DIRECTORY /kernel/ 一、下载编译内核源码 1、下载内核源码 http://my.oschina.net/u/561492/blog/88903 2、设置环境变量 打开用户目录下的.bashrc文件,在后面添加如下代码 export PATH=$PATH:~/ android/source /prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin export ARCH=arm 注意:你自己的android源码不一定是放在 /android/source下,所以要找到自己的android源码目录 如: export PATH=$PATH:~/WORKING_DIRECTORY/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin 3、设定交叉编译参数 打开

Python简介

一曲冷凌霜 提交于 2019-11-28 11:20:10
前言:作为对于python小白而言,我们需要知道什么是python,为什么学习python而不是其他编程语言,它相比于其他语言有什么优势,同时了解python 的执行操作过程又是怎么样的,它有哪些分类?接下来开始走进python的世界。 一、Python的定义:     什么是python呢?python是著名的‘龟叔Guido van Rossum在1989年圣诞节,为了打发无聊的圣诞节而开发的一门编程语言(脚本解释程序)。     根据20017年12月的Tiobe排行榜--编程语言流行度,Python赶超C#、PHP名列第四。        并且一直以来,Python整体呈上升的趋势,越来越多的人使用Python这门编程语言,逐渐更为广泛的得到行业的认可。 2、python的特点:   那么Python如此迅速的发展,其本身有什么特点呢?   先说说其优点吧:--->’优雅、明确、简单’。     a、极佳的可读性。-->由于Python采用强制缩进的方式使得代码具有极佳的可读性。     b、简单。-->非常适合学习,类似用一定的规则去写英语文章,并且使你可以专注的使用语言去解决问题而不是纠结于语言本身。     c、开源。-->简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。     d、可移植性。 --

Android:cmake实际指南

三世轮回 提交于 2019-11-28 08:41:06
一、静态库与动态库构建   (.so)共享库,shared object:节省空间,在运行时去连接,如果执行机器上没有这些库文件就不能执行。   (.a)静态库,archive:静态库和程序化为一体,不会分开。   通过 ldd命令可以查看一个可执行程序所依赖的的共享库。   使用环境变量LD_LIBRARY_DIRECTORY可以指定共享库位置  1.编译共享库: ADD_LIBRARY(hello SHARED ${SHARED_LIBRARY})  2.添加静态库 : ADD_LIBRARY(hello STATIC ${STATIC_LIBRARY})   因为默认规则是不能有相同名字的共享库与静态库,所以当生成静态库的时候,共享库会被删除,所以需要通过SET_TARGET_PROPERTIES()来解决这个问题,例子: SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME "hello")   cmake在构建一个target的时候,会删除之前生成的target,一样是通过设置SET_TARGET_PROPERTIES(hello PROPERTIES CLEAN_DIRECT_OUTPUT 1)来达到目的。  3.动态库的版本号:   同样是通过SET_TARGET_PROPERTIES()来设置 SET

c++ 编译 curl 报错 数组‘__curl_rule_01__’的大小为负 解决方法

给你一囗甜甜゛ 提交于 2019-11-28 08:15:19
背景:在原有的项目GCC编译环境下(arm-linux 32位),增加x86-linux 64位的编译环境,编译curl库的时候发生错误。 其他:编译服务器为64位Centos 编译错误提示 /include/curl/curlrules.h:142:3: 错误:数组‘__curl_rule_01__’的大小为负 __curl_rule_01__ 解决过程: 1.在网上搜索得知是用64位的编译环境编32位的镜像时导致的:在 curlrules.h 。这个错误是故意强制作为检查数据类型大小的一部分。 2.尝试按网上修改:CURL_SIZEOF_LONG 和 CURL_SIZEOF_CURL_OFF_T,但未解决问题。 3.灵机一动,因为提示是curlrules.h头文件出错,那么能不能直接换64位的头文件呢 用命令搜索 find /usr/include -name curlrules.h, 得知Centos自身就有curl库,所以直接把项目的头文件路径定到/usr/include,但是这影响到其他库的头文件路径; 4.再改良下,把整个curl文件夹拷贝到原include路径下面,为了避免与原先旧的curl冲突,把新的curl重命名为curl64 5.然后修改原码 把所有的 #include <curl/ 全局替换成 #include <curl64/ ,再编译,OK 总结: 1

linux 下 VSCODE 使用CMake编译STM32程序

不打扰是莪最后的温柔 提交于 2019-11-28 08:14:10
项目在做什么 项目地址 本项目是为了研究MCU在linux下开发而做的 --build 存放cmake编译生成的文件 --cmake 存放cmake编译时会用到的文件,比如工具链检查、编译选项等 --prj windows下kei工程的工程文件 --src 源码 本项目中大量的CMakeLists.txt的写法参考了 LoRa-Node 目前项目已经初步能够运行了 使用的组件 VSCODE -> 程序员使用的文本编辑器 cmake -> 组织编译逻辑 arm-none-eabi --> 编译,生成elf,bin,hex JLinkGDBServer -> GDB 服务器 cortex-debug -> 用来调试程序 我的环境 jk@jk:~$ sudo lsb_release -a [sudo] jk 的密码: No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.2 LTS Release: 18.04 Codename: bionic 至此,需要的组件就罗列清除了,下面来讲下怎么安装 组件安装 VSCODE 官网瞎下载安装即可,每什么可讲的,记得安装最新版 CMake(需要>3.6) jk@jk:~$ cmake -version cmake version 3.10.2

HAProxy编译安装

£可爱£侵袭症+ 提交于 2019-11-28 07:23:51
文章目录 HAProxy2.0.4编译安装 LUA脚本语言: HAProxy HAProxy2.0.4编译安装 LUA脚本语言: 下载 curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz 安装环境 yum -y install libtermcap-devel ncurses-devel libevent-devel readline-devel gcc gcc-c++ 安装 cd /usr/local/src tar xvf ~/lua-5.3.5.tar.gz cd lua-5.3.5 make linux test 查看版本 ./src/lua -v HAProxy wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.4.tar.gz #编译环境 yum -y install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools vim iotop bc zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate 编译 make ARCH = x86_64 \

明远智睿MY-IMX6-A9 Linux-3.14.52编译参考手册v2.0(3)

六眼飞鱼酱① 提交于 2019-11-28 05:57:15
【接上一章节明远智睿MY-IMX6-A9 Linux-3.14.52编译参考手册v2.0(2)】 5 Linux C程序编译 5.1 准备源码 5.2 编译目标文件 5.3 运行Linux C目标程序 6 Linux QT5程序编译 6.1 准备源码 6.2 QT程序编译 6.3 在 MY-IMX6-A9 设备上运行 6.4 运行结果 来源: https://blog.csdn.net/myzr123/article/details/100020654

CEF避坑指南(一)——下载并编译第一个示例

只谈情不闲聊 提交于 2019-11-28 01:31:55
CEF即Chromium Embedded Framework,Chrome浏览器嵌入式框架。它提供了接口供程序员们把Chrome放到自己的程序中。许多大型公司,如网易、腾讯都开始使用CEF进行前端开发,小如网易的Minecraft启动器,大如微信电脑版,都可以使用前端技术进行开发。把C++或者其他编程语言于HTML相结合的CEF,能够实现更好的效果。但一旦你决定开始学CEF,就不可避免地会掉到坑里:中文文档参差不齐,官方文档着重于Linux,很多时候甚至不能自己成功编译CEF!经过2-3天的来回查阅,终于成功编译了cefsimple示例。希望这篇文档能帮你躲过一些坑! 1.下载CEF 使用cef有两种办法:自己编译源码,或者使用编译好内核的半成品,除非你是老练的Linux高手,否则还是建议使用后者,直接下载半成品是最快速,简洁的办法了。这个半成品叫做libcef。下载libcef的官方网址是 http://cefbuilds.com/ ,这个网站已经被墙。你也可以尝试在: http://opensource.spotify.com/cefbuilds/index.html 这个映像站下载,不过可能要等上1-2天了。建议挂在远程服务器上下载,或者开代理下载。打开网站后,在页面最底部找到Windows 32-bit Build或Windows 64-bit Build,然后下载。

gcc 错误 //usr/lib/x86_64-linux-gnu/libstdc++.so.6 ...

跟風遠走 提交于 2019-11-27 22:50:16
在我代码进行编译的时候发现如下情况: $ gcc -o mian main. cpp /usr/bin/ ld : /tmp/ccSHkr4u.o: undefined reference to symbol ' _ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3 ' // usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status 问题   使用了c++的环境,所以要用g++编译: g++ -o mian main. cpp 没得摩西摩西的问题,是我的问题,留个记录。 转载于:https://www.cnblogs.com/Hocker/p/8242155.html 来源: https://blog.csdn.net/weixin_30301183/article/details/99790426