精华内容
下载资源
问答
  • CentOS 7 使用源代码编译并安装软件

    千次阅读 2016-09-03 18:01:22
    CentOS 7 使用源代码编译并安装软件 1. 确保有编译开发环境 # yum group list 看看是否有 Development Tools 没有的话需要安装 # yum group install "Development Tools" 2. wget下载...
    CentOS 7 使用源代码编译并安装软件
    


    1. 确保有编译开发环境


    # yum group list


    看看是否有 Development Tools


    没有的话需要安装


    # yum group install "Development Tools"


    2. wget下载源代码包


    # wget http://server/abc.tar.gz


    3. 解压缩


    # tar -zxvf  abc.tar.gz     #解包gzip压缩的tarball
    # tar -jxvf  abc.tar.bz2  #解开bzip2压缩的tarball


    4. 进入源代码目录


    # cd abc


    5. 
    # ./configure


    # make


    # make install
    展开全文
  • Linux软件安装:源代码软件安装 ...2 C语言编译简单范例3 使用make进行宏编译4 通过编译代码进行软件安装 1 开源软件的一些基本概念 1.1 什么是开放源码,编译程序与可执行文件 可执行文件

    Linux软件安装:源代码与软件安装

    1 开源软件的一些基本概念

    1.1 什么是开放源码,编译程序与可执行文件

    • 可执行文件
      • Linux上真正可以执行的文件是二进制文件,例如/usr/bin/passwd,/bin/touch
      • shell script只是调用这些二进制文件,完成某种功能
      • 可以用file命令检验文件类型
        $ file /bin/bash
        /bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xf199a4a89ac968c2e0e99f2410600b9d7e995187, stripped
        $ file /etc/init.d/rc
        /etc/init.d/rc: POSIX shell script, ASCII text executable
        
    • 编译程序
      • 这些可以执行的二进制文件是哪儿来的呢?首先,必须要写程序的源代码,然后,由编译程序将程序的源代码 编译成二进制形式。源代码是由程序员编写的,使用特定的程序语言,如C,C++,Java,Python.但是机器看不懂 这些语言,所以要使用编译程序将这些语言编写的源代码编译成机器可以看懂的二进制文件。如C语言常用的编译器 为gcc。

    1.2 什么是函数库

    函数库由一系列函数组成,每一个函数都是一个代码片段,完成特定的功能,这样我们使用一些常用功能时,就不必 自己重新编写代码,只需要调用函数库里的函数就可以了。函数库分为静态函数库和动态函数库。

    • 静态函数库
      • 扩展名:.a
      • 编译时会直接编译到二进制文件中,所以生成的文件通常比较大,升级时需要重新编译
    • 动态函数库
      • 扩展名:.so
      • 编译时不会直接编译到二进制文件中,只是给出一个路径,指向相应函数库,程序执行调用时动态地向此路径读取, 升级时,只需要替换原路径中的动态函数库就可以了,不需要重新编译
      • 使用ldd命令可以知道程序使用了哪些动态函数库
        $ ldd /usr/bin/passwd
                linux-gate.so.1 =>  (0xb7784000)
                libpam.so.0 => /lib/i386-linux-gnu/libpam.so.0 (0xb775c000)
                libpam_misc.so.0 => /lib/i386-linux-gnu/libpam_misc.so.0 (0xb7758000)
                libselinux.so.1 => /lib/i386-linux-gnu/libselinux.so.1 (0xb7738000)
                libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb758e000)
                libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb7589000)
                /lib/ld-linux.so.2 (0xb7785000)
        

    1.3 什么是 make 与 configure

    当程序的文件数目非常大时,直接使用gcc编译会变得非常麻烦,这时,我们可以写一个文件,定义好如何编译整个程序, 这个文件即是makefile,然后再调用make命令,make命令会使用makefile完成编译。那么makefile如何产生呢,通常软件 提供者都会提供一个configure程序,用于检测机器环境,生成makefile。检测的内容包括是否有合适的编译器,是否存在 需要的函数库,操作系统版本是否合适等等。

    2 C语言编译简单范例

    • 使用vim编写两个程序源代码
      #include <stdio.h>
      
      int main(void) {
          thankYou();
          printf ("hello,world\n");
          return 0;
      }
      
      #include <stdio.h>
      
      void thankYou() 
      {
          printf ("Thank you\n");
      }
      
      
    • 使用gcc编译 这一步,源代码文件被编译成为目标文件
      $ gcc -c hello.c -o hello.o
      $ gcc -c thank.c -o thank.o
      
    • 使用gcc链接 通过链接,我们可以将函数库中已经编译好的目标文件与我们自己编写生成的目标文件链接在一起,成为 一个最终的二进制文件
      $ gcc hello.o thank.o -o hi
      
    • 执行
      $ ./hi
      Thank you
      hello,world
      
    • 注意
      • 可以使用 -l指定函数库,-L指定函数库路径,-I指定头文件路径
        gcc sin.c -lm -L/lib -L/usr/lib -I/usr/include
        

        上面的-l指加入函数库,m指的是libm.so这个函数库

    3 使用make进行宏编译

    文件很多时,编译的过程非常繁琐,有些文件更新过,需要重新编译,有的没有更新过,不需要重新编译, 有些编译过程需要重复很多次,为了能实现编译过程的自动化,可以编写makefile描述如何编译,然后用make 完成整个过程的自动编译。

    • makefile的编写
      hi:hello.o thank.o
              gcc -o hi hello.o thank.o
      

      注意第二行前的Tab缩进。

    • make的使用
      $ make
      cc    -c -o hello.o hello.c
      cc    -c -o thank.o thank.c
      
    • 运行
      $ ./hi
      hello,world
      Thank you
      

    从make作用来看,我们直接写一个shell script不就好了?其实不然,可以看到makefile中只需要指出生成hi 需要的目标文件,make就可以自动找到相应的源代码文件并且编译好,然后用我们给出的链接方式进行链接。 此外,如果hello.c更新过,那么再次make时,make会加以判断,只重新编译hello.c,这对于较大的程序而言 会节省很多资源和时间。 另外,makefile中还可以定义变量,定义如何删除编译出的目标文件

    OBJS = hello.o thank.o 
    hi:hello.o thank.o
            gcc -o hi ${OBJS}
    
    clean:
            rm hi ${OBJS}
    

    测试一下:

    $ ls hello.o thank.o hi
    hello.o  hi  thank.o
    
    $ make clean
    rm hi hello.o thank.o 
    
    $ ls hello.o thank.o hi
    ls: cannot access hello.o: No such file or directory
    ls: cannot access thank.o: No such file or directory
    ls: cannot access hi: No such file or directory
    
    $ make 
    cc    -c -o hello.o hello.c
    cc    -c -o thank.o thank.c
    gcc -o hi hello.o thank.o 
    
    $ ls hello.o thank.o hi
    hello.o  hi  thank.o
    
    $ ./hi
    hello,world
    Thank you
    

    4 通过编译源代码进行软件安装

    • 先取得源代码,解压,然后进入源代码目录
    • ./configure 执行configure,建立makefile,这一步非常重要,configure程序会检测编译源代码需要的操作系统,库文件等等, 执行前最好看看目录下的README或者INSTALL文件,看看有什么需要注意的地方
    • make clean 根据makefile中定义的clean操作执行一些清理工作
    • make 根据makefile的内容进行编译
    • make install 根据makefile中定义的install将编译生成的文件安装到相应目录
    展开全文
  • 1.下载并解压文件 如果下的压缩文件的后缀是 tar.gz 解压用 tar -xzvf xxx.tar.gz tar.b2 解压用 tar -xjvf xxx.tar.b2 tar 解压用 tar -xvf xxx.tar ...cd 到源代码所在的文件夹,配置安...

    1.下载并解压文件

    如果下的压缩文件的后缀是

    tar.gz 解压用  tar -xzvf xxx.tar.gz

    tar.b2 解压用  tar -xjvf xxx.tar.b2

    tar 解压用  tar -xvf xxx.tar

    2.配置安装路径

    在/usr/local/下创建放置将要安装的软件目录

    mkdir /usr/local/newApp

    cd 到源代码所在的文件夹,配置安装路径

    ./configure --prefix=/usr/local/newApp

    (./configure --prefix=/usr/local/指定安装根目录 .--with指的是安装本文件所依赖的库文件。/configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系,生成makefile文件)

    3.编译源代码

    make

    如果是多核cpu可以用 make -j来加快编译速度

    4.安装

    make install

    这个过程可能需要root权限

    5.删除源代码以节省磁盘空间

    rm -rf xxx

    第3和第4步可以组合成  make&&make install

    当然你也可以把1到4步用一组合命令来执行

    一般来说时间花费最长的是在make阶段,比如我从源代码安装boost用了10+分钟,从源代码make gcc4.8的源代码用好几个小时,当然这make的时间也要看机子的配置而定。

    展开全文
  • 高级语言为什么不直接编译成机器码,而编译成汇编代码?

    1.一般的编译器,是先将高级语言转换成汇编语言(中间代码),然后在汇编的基础上优化生成OBJ目标代码,最后Link成可执行文件。


    2.高级语言为什么不直接编译成机器码,而编译成汇编代码?

    1)其中有一个好处是方便优化和调试,因为编译器也是工具,也是机器,毕竟是机器生成的程序,不可以非常完美的,而汇编是机器指令的助记 符,一个汇编指令就对应一条机器指令(特殊指令除外),调试起来肯定会比机器指令方便的方便,这样优化起来也方便。

    2)高级语言只需要编译成汇编代码就可以了,汇编代码到机器码的转换是由硬件实现即可,有必要用软件实现这样分层可以有效地减弱编译器编写的复杂性,提高了效率.就像网络通 讯的实现需要分成很多层一样,主要目的就是为了从人脑可分析的粒度来减弱复杂性。

    3)如果把高级语言的源代码直接编译成机器码的话,那要做高级语言到机器码之间的映射,如果这样做的话,每个写编译器的都必须熟练机 器码。这个不是在做重复劳动么?

    展开全文
  • 请问有没有一种软件能对在记事本中写好的代码进行编译执行呢?还能指出错误的。
  • FaceBook 发布了一款能将php代码转换为C++的工具,hiphop, 如果你的网站很大,类似新浪这样的大型门户,可以考虑...目前已经在CentOS和ubuntu等Linux服务器上编译通过。 安装: 一、需要依赖的包 cmake 2.
  • OpenCV源代码编译

    千次阅读 2019-03-26 14:34:54
    文章目录编译OpenCV源代码1.下载安装CMake2.使用 CMake 生成 OpenCVd 源代码工程的解决方案3.编译OpenCV源码 编译OpenCV源代码   想要在 Windows 平台下生成 OpenCV 的解决方案,需要一个名为 CMake 的开源软件。 ...
  • c#代码编译过程

    千次阅读 2014-11-18 21:32:57
    摘自以下两篇文章: ... ... C#语言运行时要经过两次编译,第一次编译是将源代码编译为MSIL(微软中间语言),即可以发布软件了。当软件运行时MSIL代码载入内存时会进行第二
  • Linux源代码编译安装详解

    千次阅读 2019-06-16 15:53:23
    使用源代码编译安装软件有以下优点,获取软件的最新版及时修复bug,软件功能可按需选择或定制,有更多软件可供选择,源码包适用于各种平台。 工具/原料 一台装有Linux操作系统的电脑 接入互联网络并能正常...
  • 代码编译的工作过程

    千次阅读 2019-06-06 22:21:36
    代码(sourcecode)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标代码(objectcode)→连接器(Linker)→可执行程序(executables) 你可能会想,为什么不直接一步生成可执行文件,而是让分开...
  • 一个可执行文件包含多个字段(field), text段是程序代码段,包含着要运行程序的指令。shellcode像你说的,转汇编语言很容易,因为shellcode本质就是一段恶意的机器码——cpu指令 逆向工程(reverse engineering)常...
  • 从源代码编译OSG

    万次阅读 2010-07-06 22:32:00
    Windows Xp下从源代码编译OSG,使用CMake工具
  • 如何优化代码编译速度

    千次阅读 2013-05-26 21:21:34
    软件的日常开发活动中,代码编译是一件很重要的工作,因为它直接产生了可以运行的二进制文件。但是编译工作却是一个比较费时间的过程。当需要编译的文件数量比较少的时候,这一点可能表现的并不突出,然而当文件...
  • 在绝大多数情况下,它都能很好的完成你对未知程序集内部代码的探索。 下载:https://pan.baidu.com/s/1UgSXEKWrU_1jWr5-wqfHtw 新建Unity工程,编译PC平台,生成目录如下图 进到CoroutineTest_Data\Managed目录...
  • Android10.0 系统源代码编译

    千次阅读 热门讨论 2019-12-19 14:22:39
    AndroidQ已改名Android10, 今天我们换一种方式来编译Android10。 编译环境 Windows10,VMware15,Ubuntu18.04, 虚拟环境。 PC机,内存32G,CPU 16 核心,I7八代。 Ubuntu18.04 虚拟机。 源码下载 下载 git...
  • EXE文件反编译成C源代码的工具

    热门讨论 2003-09-01 00:00:00
    可将EXE文件反编译成C源代码的工具
  • 今天群里有朋友问到如何讲python编译为exe文件,刚好有时间,现写了。 PyInstaller 这是官网的说明,好像挺6的! 多方便啊:安装然后就可以编译python程序成为exe可执行文件了。 确认安装好pip 参考 快速安装并...
  • 在详细了解 IEnumerable IEnumerator yield等相关的,很多文章提到查看反编译代码。请问是一定要通过第三方软件查看导出的.exe文件才能看到吗,我用的VS开发,在VS开发上是否可以直接查看的
  • storm源代码编译 及lein用法

    千次阅读 2014-07-03 09:54:43
    storm号称是实时领域的hadoop,作为一个平台型系统,他提供了实时计算,线性扩展,ack机制,事务型Tom,DRPC,Trident等等强大的服务,应用场景也非常广泛,作为一个...1.编译storm源代码之前需要先安装好以下软件
  • 防止代码编译

    千次阅读 2018-03-31 01:15:20
    java作为解释型的语言,其高度抽象的特性意味其很容易被反编译,容易被反编译,...或许反编译别人的代码不怎么道德,这个嘛......废话不多说,正文如下:常用的保护技术由于Java字节码的抽象级别较高,因此它们较容...
  • 编译原理之代码生成

    千次阅读 2017-12-18 16:13:41
    目标代码生成阶段的任务是:将此前的中间代码转换特定机器上的机器语言或汇编语言,这种转换程序便被称为代码生成器。1. 程序移植性和编译器模块设计的关系 之所以将编译原理分成这种多阶段多模块的组织形式,...
  • 靖心注:自己编译Ogre就可以学习Ogre的源代码了,能熟悉这个引擎的代码就可以说是个高手了吧。尤其是现在大家都用Windows7或者8了,但是好像还找不到一篇给初学者介绍如何编译Ogre引擎的文章,故此在外文中找了一篇...
  • Android源代码编译过程

    千次阅读 2010-12-22 16:01:00
    前几天安装了Ubuntu10.10 64位server版本,主要就是为了编译Android系统用的。昨天下班时,开始顺利编译,今天早上上班后,发现编译完成。然后下载Android SDK,用emulator加载编译后的内核,成功。现在将整个过程...
  • C#软件编译代码错误的改错方法

    千次阅读 2011-12-06 00:46:12
    前些日子玩了一玩飞信2008,有一天心情不错,静下心来好好分析了一下这个软件。发现它是.NET程序,而且EXE也未加混淆(大公司就是牛),先是通过reflector简单看了看,代码太多,看得一头雾水,也没学到什么;好奇心...
  • 比特币Bitcoin源代码安装编译

    万次阅读 2018-01-09 15:03:48
    比特币Bitcoin源代码安装编译  比特币 (货币符号: ฿;英文名:Bitcoin;英文缩写: BTC),是一种用于开源的P2P软件而产生的电子货币。比特币全局图是这样的:   在这儿主要介绍Linux下的比特币Bitcoin安装,...
  • 重新编译代码也无法打开。 搜索%appdata%文件夹,在里面找到(BoneBD)文件夹,删除。 重新编译程序运行正确。 原因: 可能是软件安装不完整导致,通过强制移除软件在系统上的缓存文件解决。 ...
  • 最近在学习如何使用jitsi用于企业sip、xmpp协议的IM客户端,发现有些 模块不想要,比如google talk等,尝试着进行了对jitsi代码进行了重新编译。 需要的软件如下: Eclipse Kepler Service Release 1 ...
  • QCA-WIFI如何编译IPQ8074代码

    千次阅读 2019-07-27 18:33:53
    QCA-WIFI如何编译代码生产代码编译代码 本文以QCA的IPQ807x芯片作为编译说明(需要有相关release文档): 生产代码 1,如果自己有下面代码,可以不执行,否则要到QCA chip-code获取相关代码。 2,下面步骤...
  • 华为软件编程规范学习(十)--代码编辑、编译、审查10-1:打开编译器的所有告警开关对程序进行编译10-2:在产品软件(项目组)中,要统一编译开关选项10-3:通过代码走读及审查方式对代码进行检查说明:代码走读主要是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 586,844
精华内容 234,737
关键字:

代码如何编译成软件