• arm-linux-ld命令

    2014-10-24 20:32:51
    -T选项是ld命令中比较重要的一个选项,可以用它直接指明代码的代码段、数据段、bbs  段,对于复杂的连接,可以专门写一个脚本来告诉编译器如何...arm-linux-ld -Ttext 0x00000000 crt0.o led_on_c.o -o led_on_c_tm

    -T选项是ld命令中比较重要的一个选项,可以用它直接指明代码的代码段、数据段、bbs

      段,对于复杂的连接,可以专门写一个脚本来告诉编译器如何连接。

      -Ttext addr

      -Tdata addr

      -Tbss addr

     

    arm-linux-ld -Ttext 0x00000000 crt0.o led_on_c.o -o led_on_c_tmp.o

      我们看看它是什么意思:-o选项设置输出文件的名字为led_on_c_tmp.o;“--Ttext 0x00000000”设置代码段的起始地址为0x00000000;这条指令的作用就是将crt0.o和led_on_c.o连接成led_on_c_mp.o可执行文件,此可执行文件的代码段起始地址为0x00000000。


      arm-linux-ld命令中选项“-Ttext”也可以使用选项“-Tfilexxx”来代替,在文件filexxx中,我们可以写出更复杂的参数来使用arm-linux-ld命令。

     

     

    ARM汇编中,常有两种跳转方法:b跳转指令、ldr指令向PC赋值。

      我自己经过归纳如下:

      b step1 :b跳转指令是相对跳转,依赖当前PC的值,偏移量是通过该指令本身的bit[23:0]算出来的,这使得使用b指令的程序不依赖于要跳到的代码的位置,只看指令本身。

      ldr pc, =step1 :该指令是从内存中的某个位置(step1)读出数据并赋给PC,同样依赖当前PC的值,但是偏移量是那个位置(step1)的连接地址(运行时的地址),所以可以用它实现从Flash到RAM的程序跳转。

    展开全文
  • arm-linux-ld 命令详解

    2017-04-27 11:35:05
    在开始后续实验之前,我们得了解一下arm-linux-ld连接命令的使用。在上述实验中,我们一直使用类似如下的命令进行连接: arm-linux-ld -Ttext 0x00000000 crt0.o led_on_c.o -o led_on_c_tmp.o 我们看看它是...

    在开始后续实验之前,我们得了解一下arm-linux-ld连接命令的使用。在上述实验中,我们一直使用类似如下的命令进行连接:

    arm-linux-ld -Ttext 0x00000000 crt0.o led_on_c.o -o led_on_c_tmp.o

    我们看看它是什么意思:

    -o选项设置输出文件的名字为led_on_c_tmp.o;

    “--Ttext 0x00000000”设置代码段的起始地址为0x00000000;

    这条指令的作用就是将crt0.o和led_on_c.o连接成led_on_c_mp.o可执行文件,此可执行文件的代码段起始地址为0x00000000(即从这里开始执行)。

    我们感兴趣的就是“—Ttext”选项!进入LINK目录,link.s代码如下:

    1         .text

    2 .global_start

    3  _start:

    4          b step1

    5  step1:

    6          ldr pc,=step2

    7  step2:

    8          b step2





    Makefile 如下:

    1  link:link.s

    2      arm-linux-gcc –c -o link.o link.s

    3      arm-linux-ld -Ttext 0x00000000 link.o -o link_tmp.o

    4      #arm-linux-ld -Ttext 0x30000000 link.o -o link_tmp.o

    5      arm-linux-objcopy -O binary-S link_tmp.o link

    6      arm-linux-objdump –D -b binary -m arm link>ttt.s

    7      #arm-linux-objdump –D -b binary -m arm link>ttt2.s

    8  clean:

    9      rm -f link

    10     rm -f link.o

    11     rm -f link_tmp.o


    实验步骤:

    1.进入目录LINK,运行make生成arm-linux-ld选项为“-Ttext 0x00000000”的反汇编码ttt.s

    2.make clean

    3.修改Makefile:将第4、7行的“#”去掉,在第3、6行前加上“#”

    4.运行make生成arm-linux-ld选项为“-Ttext 0x30000000”的反汇编码ttt2.s


    link.s程序中用到两种跳转方法:b跳转指令、直接向pc寄存器赋值。

    我们先把在不同“—Ttext”选项下,生成的可执行文件的反汇编码列出来,再详细分析这两种不同指令带来的差异。

    ttt.s:ttt2.s



    6    00000000 <.data>:                                    |  6    00000000 <.data>:
    7    0:   eaffffff    b   0x4                              |  7    0:   eaffffff    b   0x4
    8    4:   e59ff000    ldr pc, [pc, #0]    ; 0xc       |  8    4:   e59ff000    ldr pc, [pc, #0]    ; 0xc
    9    8:   eafffffe    b   0x8                              |  9    8:   eafffffe    b   0x8
    10    c:   30000008    andcc   r0, r0, r8              | 10    c:   00000008    andeq   r0, r0, r8

    先看看b跳转指令:它是个相对跳转指令,其机器码格式如下:

    [31:28]位是条件码;[27:24]位为“1010”(0xeaffffff)时,表示B跳转指令,为“1011”时,表示BL跳转指令;[23:0]表示偏移地址。

    使用B或BL跳转时,下一条指令的地址是这样计算的:

    将指令中24位带符号的补码立即数扩展为32(扩展其符号位);将此32位数左移两位;将得到的值加到pc寄存器中,即得到跳转的目标地址。

    我们看看第一条指令“b step1”的机器码eaffffff:

    1.24位带符号的补码为0xffffff,将它扩展为32得到:0xffffffff

    2.将此32位数左移两位得到:0xfffffffc,其值就是-4

    3.pc 的值是当前指令的下两条指令的地址,加上步骤2得到的-4,这恰好是第二条指令step1的地址。各位不要被被反汇编代码中的“b 0x4”给迷惑了,它可不是说跳到绝对地址0x4处执行,绝对地址得像上述3个步骤那样计算。您可以看到b跳转指令是依赖于当前pc寄存器的值的,这个特 性使得使用b指令的程序不依赖于代码存储的位置——即不管我们连接命令中“--Ttext”为何,都可正确运行。

    //一堆废话


    再看看第二条指令ldr pc,=step2:从反汇编码“ldr pc,[pc,#0]”可以看出,这条指令从内存中某个位置读出数据,并赋给pc寄存器。这个位置的地址是当前pc寄存器的值加上偏移值0,其中存放的值依赖于连接命令中的“--Ttext”选项。

    执 行这条指令后,对于ttt.s,pc=0x00000008;对于ttt2.s,pc=0x30000008。于是执行第三条指令“b step2”时,它的绝对地址就不同了:对于ttt.s,绝对地址为0x00000008;对于ttt.s,绝对地址为0x30000008。

    ttt2.s上电后存放的位置也是0,但是它连接的地址是0x30000000。

    我们以后会经常用到“存储地址和连接地址不同”(术语上称为加载时域和运行时域)的特性:

    大多机器上电时是从地址0开始运行的,但是从地址0运行程序在性能方面总有很多限制,所以一般在开始的时候,使用与位置无关的指令将程序本身复制到它的连接地址处,然后使用向pc寄存器赋值的方法跳到连接地址开始的内存上去执行剩下的代码。

    arm-linux-ld命令中选项“-Ttext”也可以使用选项“-Tfilexxx”来代替,在文件filexxx中,我们可以写出更复杂的参数来使用arm-linux-ld命令

     

     

    /××××××××××××××××××这是分割线××××××××××××××××××××/

     

    以下转自:http://www.tudou.com/home/diary_v3904315.html

    -T选项是ld命令中比较重要的一个选项,可以用它直接指明代码的代码段、数据段、博士生、 

      段,对于复杂的连接,可以专门写一个脚本来告诉编译器如何连接。 

      -Ttext addr 

      -Tdata addr 

      -Tbss addr 

       arm-elf-ld -Ttext 0x00000000 -g led_On.o -o led_on_elf ,运行地址为0x00000000,由于没有data和bss,他们会默认的依次放在后面。相同的代码 不同的Ttext,你可以对比一下他们之间会变的差异,ld会自动调整跳转的地址。 

      *简单的Linker script 

      (1) SECTIONS命令: 

       The SECTIONS command tells the linker how to map input sections into output sections, and how to place the output sections in memory. 

      命令格式如下: 

      SECTIONS 

      { 

      sections-command 

      sections-command 

      ...... 

      } 

      其中sections-command可以是ENTRY命令,符号赋值,输出段描述,也可以是overlay描述。 

      (2) 地址计数器‘.’(location counter): 

      该符号只能用于SECTIONS命令内部,初始值为‘0’,可以对该符号进行赋值,也可以使用该符号进行计算或赋值给其他符号。它会自动根据SECTIONS命令内部所描述的输出段的大小来计算当前的地址。 

      (3) 输出段描述(output section description): 

      前面提到在SECTIONS命令中可以作输出段描述,描述的格式如下: 

      section [address] [(type)] : [AT(lma)] 

      { 

      output-section-command 

      output-section-command 

      ... 

      } [>region] [AT>lma_region] [:phdr :phdr ...] [=fillexp] 

      很多附加选项是用不到的。其中的output-section-command又可以是符号赋值,输入段描述,要直接包含的数据值,或者某一特定的输出段关键字。 

      *linker script 实例 

      ============================== 

      OUTPUT_ARCH(arm) 

      ENTRY(_start) 

      SECTIONS { 

      . = 0xa3f00000; 

      __boot_start = .; 

      .start ALIGN(4) : { 

      *(.text.start) 

      } 

      .setup ALIGN(4) : { 

      setup_block = .; 

      *(.setup) 

      setup_block_end = .; 

      } 

      .text ALIGN(4) : { 

      *(.text) 

      } 

      .rodata ALIGN(4) : { 

      *(.rodata) 

      } 

      .data ALIGN(4) : { 

      *(.data) 

      } 

      .got ALIGN(4) : { 

      *(.got) 

      } 

      __boot_end = .; 

      .bss ALIGN(16) : { 

      bss_start = .; 

      *(.bss) 

      *(COMMON) 

      bss_end = .; 

      } 

      .comment ALIGN(16) : { 

      *(.comment) 

      } 

      stack_point = __boot_start + 0x00100000; 

      loader_size = __boot_end - __boot_start; 

      setup_size = setup_block_end - setup_block; 

      } 

      ============================= 

      在SECTIONS命令中的类似于下面的描述结构就是输出段描述: 

      .start ALIGN(4) : { 

      *(.text.start) 

      } 

       .start 为output section name,ALIGN(4)返回一个基于location counter(.)的4字节对齐的地址值。*(.text.start)是输入段描述,*为通配符,意思是把所有被链接的object文件中 的.text.start段都链接进这个名为.start的输出段。 

      源文件中所标识的section及其属性实际上就是对输入段的描述,例如.text.start输入段在源文件start.S中的代码如下: 

      .section .text.start 

      .global _start 

      _start : 

      b start 

      arm-elf-ld -Ttimer.lds -o timer_elf header .o 

      这里就必须存在一个timer.lds的文件。 

      对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它,但感觉还是挺重要的,有必要了解一下。 

      先看一下GNU官方网站上对.lds文件形式的完整描述: 

      SECTIONS { 

      ... 

      secname start BLOCK(align) (NOLOAD) : AT ( ldadr ) 

      { contents } >region :phdr =fill 

      ... 

      } 

      secname和contents是必须的,其他的都是可选的。下面挑几个常用的看看: 

      1、secname:段名 

      2、contents:决定哪些内容放在本段,可以是整个目标文件,也可以是目标文件中的某段(代码段、数据段等) 

      3、start:本段连接(运行)的地址,如果没有使用AT(ldadr),本段存储的地址也是start。GNU网站上说start可以用任意一种描述地址的符号来描述。 

      4、AT(ldadr):定义本段存储(加载)的地址。 

      /* nand.lds */ 

      SECTIONS { 

      firtst 0x00000000 : { head.o init.o } 

      second 0x30000000 : AT(4096) { main.o } 

      } 

       以上,head.o放在0x00000000地址开始处,init.o放在head.o后面,他们的运行地址也是0x00000000,即连接和存储地 址相同(没有AT指定);main.o放在4096(0x1000,是AT指定的,存储地址)开始处,但是它的运行地址在0x30000000,运行之前 需要从0x1000(加载处)复制到0x30000000(运行处),此过程也就用到了读取Nand flash。 

      这就是存储地址和连接(运行)地址的不同,称为加载时域和运行时域,可以在.lds连接脚本文件中分别指定。 

      编写好的.lds文件,在用arm-linux-ld连接命令时带-Tfilename来调用执行,如 

      arm-linux-ld ?Tnand.lds x.o y.o ?o xy.o。也用-Ttext参数直接指定连接地址,如 

      arm-linux-ld ?Ttext 0x30000000 x.o y.o ?o xy.o。 

      既然程序有了两种地址,就涉及到一些跳转指令的区别,这里正好写下来,以后万一忘记了也可查看,以前不少东西没记下来现在忘得差不多了。 

      ARM汇编中,常有两种跳转方法:b跳转指令、ldr指令向PC赋值。 

      我自己经过归纳如下: 

      b step1 :b跳转指令是相对跳转,依赖当前PC的值,偏移量是通过该指令本身的bit[23:0]算出来的,这使得使用b指令的程序不依赖于要跳到的代码的位置,只看指令本身。 

      ldr pc, =step1 :该指令是从内存中的某个位置(step1)读出数据并赋给PC,同样依赖当前PC的值,但是偏移量是那个位置(step1)的连接地址(运行时的地址),所以可以用它实现从Flash到RAM的程序跳转。 

      此外,有必要回味一下adr伪指令,U-boot中那段relocate代码就是通过adr实现当前程序是在RAM中还是flash中。仍然用我当时的注释 

      adr r0, _start /* r0是代码的当前位置 */ 

      /* adr伪指令,汇编器自动通过当前PC的值算出 如果执行到_start时PC的值,放到r0中: 

       当此段在flash中执行时r0 = _start = 0;当此段在RAM中执行时_start = _TEXT_BASE(在board/smdk2410/config.mk中指定的值为0x33F80000,即u-boot在把代码拷贝到RAM中去 执行的代码段的开始) */ 

      ldr r1,UGG BOOTS, _TEXT_BASE /* 测试判断是从Flash启动,还是RAM */ 

      /* 此句执行的结果r1始终是0x33FF80000,因为此值是又编译器指定的(ads中设置,或-D设置编译器参数) */ 

      cmp r0, r1 /* 比较r0和r1,调试的时候不要执行重定位 */ 

      下面,结合u-boot.lds看看一个正式的连接脚本文件。这个文件的基本功能还能看明白,虽然上面分析了好多,但其中那些GNU风格的符号还是着实让我感到迷惑。 

      OUTPUT_FORMAT("elf32­littlearm", "elf32­littlearm", "elf32­littlearm") 

      ;指定输出可执行文件是elf格式,32位ARM指令,小端 

      OUTPUT_ARCH(arm) 

      ;指定输出可执行文件的平台为ARM 

      ENTRY(_start) 

      ;指定输出可执行文件的起始代码段为_start. 

      SECTIONS 

      { 

      . = 0x00000000 ; 从0x0位置开始 

      . = ALIGN(4) ; 代码以4字节对齐 

      .text : ;指定代码段 

      { 

      cpu/arm920t/start.o (.text) ; 代码的第一个代码部分 

      *(.text) ;其它代码部分 

      } 

      . = ALIGN(4) 

      .rodata : { *(.rodata) } ;指定只读数据段 

      . = ALIGN(4); 

      .data : { *(.data) } ;指定读/写数据段 

      . = ALIGN(4); 

      .got : { *(.got) } ;指定got段, got段式是uboot自定义的一个段, 非标准段 

      __u_boot_cmd_start = . ;把__u_boot_cmd_start赋值为当前位置, 即起始位置 

      .u_boot_cmd : { *(.u_boot_cmd) } ;指定u_boot_cmd段, uboot把所有的uboot命令放在该段. 

      __u_boot_cmd_end = .;把__u_boot_cmd_end赋值为当前位置,即结束位置 

      . = ALIGN(4); 

      __bss_start = .; 把__bss_start赋值为当前位置,即bss段的开始位置 

      .bss : { *(.bss) }; 指定bss段 

      _end = .; 把_end赋值为当前位置,即bss段的结束位置 

      }

    展开全文
  • arm-linux-ld是一个链接程序工具,其作用主要是将汇编过的多个二进制文件进行链接,成为一个可执行的二进制文件,这个命令的选项有好多,具体用到的时候大家可以使用--help 选项来查看具体的选项用法。选项用法选项...

    arm-linux-ld是一个链接程序工具,其作用主要是将汇编过的多个二进制文件进行链接,成为一个可执行的二进制文件,这个命令的选项有好多,具体用到的时候大家可以使用--help 选项来查看具体的选项用法。

    选项用法选项用法:

    下面将几个重要的命令介绍一下:
    -T File    --script FILE指定一个链接器脚本文件,指示编译器按照脚本进行链接;
    -Tbss ADDRESS    bss段的链接地址;
    -Ttext ADDRESS   代码段链接地址;
    -Tdata ADDRESS  数据段链接地址;
    -r --relocateable 产生可重定向的输出,比如,产生一个输出文件它可再次作为‘ld'的输入,这经常被叫做“部分链接”,当我们需要将几个小的.o文件链接成为一个.o文件的时候,需要使用此选项。
    -e  指定程序的入口标号;
    -l   LibName 指定要链接的库;
    -L  Directory 增加库文件的搜索路径;
    -o  FILE 设置输出文件名;
    -O  输出文件最优;

    -a  指定arch体系;

    例如:

    arm-linux-ld -Ttext 0x10000000 main.o -o main_elf

    这句话是将main.o 文件连接成ELF格式文件,在连接的过程中,-Ttext 0x10000000这个选项告诉连接器我的这段main.o程序需要被加载到RAM的0x10000000地址处执行。所以在连接的时候main.o第一条语句的连接地址就是0x10000000,第二条语句就是跟在其后面。有很多人都议论连接地址和运行地址这个怎么说的都有。运行地址可以等于连接地址,还可以认为运行地址是pc指针指向的地址,就是正在执行指令的地址。只要理解了这个概念就可以了。

    展开全文
  • arm-linux-ld的理解

    2014-11-05 21:11:54
    -T选项是ld命令中比较重要的一个选项,可以用它直接指明代码的代码段、数据段、bbs  段,对于复杂的连接,可以专门写一个脚本...arm-linux-ld -Ttext 0x00000000 crt0.o led_on_c.o -o led_on_c_tmp.o  我们看看
    -T选项是ld命令中比较重要的一个选项,可以用它直接指明代码的代码段、数据段、bbs

      段,对于复杂的连接,可以专门写一个脚本来告诉编译器如何连接。

      -Ttext addr

      -Tdata addr

      -Tbss addr

    arm-linux-ld -Ttext 0x00000000 crt0.o led_on_c.o -o led_on_c_tmp.o

      我们看看它是什么意思:-o选项设置输出文件的名字为led_on_c_tmp.o;“--Ttext 0x00000000”设置代码段的起始地址为0x00000000;这条指令的作用就是将crt0.o和led_on_c.o连接成led_on_c_mp.o可执行文件,此可执行文件的代码段起始地址(即运行地址)为0x00000000。


      arm-linux-ld命令中选项“-Ttext”也可以使用选项“-Tfilexxx”来代替,在文件filexxx中,我们可以写出更复杂的参数来使用arm-linux-ld命令。

    ARM汇编中,常有两种跳转方法:b跳转指令、ldr指令向PC赋值。

      我自己经过归纳如下:

      b step1 :b跳转指令是相对跳转,依赖当前PC的值,偏移量是通过该指令本身的bit[23:0]算出来的,这使得使用b指令的程序不依赖于要跳到的代码的位置,只看指令本身。

      ldr pc, =step1 :该指令是从内存中的某个位置(step1)读出数据并赋给PC,同样依赖当前PC的值,但是偏移量是那个位置(step1)的连接地址(运行时的地址),所以可以用它实现从Flash到RAM的程序跳转。

    展开全文
  • arm-linux-ld 的使用

    2015-09-18 09:05:20
    其中连接的过程使用的工具是arm-linux-ld,arm-linux-ld最主要的选项就是 -T 。我们可以在命令行中输入:arm-linux-ld --help 来查看各个选项的介绍。-T FILE ( Read linker script )读取连接脚本,-Tbss address,-...

    在嵌入式开发中从源程序到可执行程序一共四部分, 预编译  编译 汇编  连接。其中连接的过程使用的工具是arm-linux-ld,arm-linux-ld最主要的选项就是 -T 。我们可以在命令行中输入:arm-linux-ld --help 来查看各个选项的介绍。-T FILE  ( Read linker script )读取连接脚本,-Tbss address,-Tdata address,-Ttext address 设置各段的地址。

    如:arm-linux-ld   -Ttext   0x10000000   main.o   -o   main_elf

    这句话是将main.o 文件连接成 main_elf格式文件,在连接的过程中,-Ttext   0x10000000 这个选项告诉连接器 我的这段main.o程序 需要被加载到RAM的0x10000000地址处执行。 所以在连接的时候main.o第一条语句的连接地址就是0x10000000,第二条语句就是跟在其后面。 有很多人都议论连接地址和运行地址 这个怎么说的都有。运行地址可以==连接地址 还可以认为运行地址是pc指针指向的地址 就是正在执行指令的地址。只要理解了这个概念就可以了。


    如:arm-linux-ld   -Tmain.lds   main.o   -o   main_elf

    如果执行更复杂的地址设置就需要使用连接脚本在这里我们创建 main.lds连接脚本文件。其内容如下:

    SECTIONS

    {

    main 0x30000000 : AT(1024)  { main.o }

    }

    main是我们给这个段起的名字 ,0x30000000是告诉连接器我的这段程序要被加载到RAM的0x30000000处执行,AT(1024)意思是 告诉连接器 我的这段程序main.o 要被放到NAND Flash的1024Byte地址处。在烧写程序时就将mian.o程序写到了NAND Flash的1024B处。那这个1024就是我们的存储地址或者叫加载地址。

    展开全文
  • 引入 我们对每个c或者汇编文件进行单独编译,但是不去连接,生成很多.o 的文件...我觉得在写makefile的时候,最为重要的就是ld的理解,下面说说我的经验: 首先,要确定我们的程序用没有用到标准的c库,或者一些系统的
  • 我们对每个c或者汇编文件进行单独编译,但是不去连接,生成很多.o 的文件...我觉得在写makefile的时候,最为重要的就是ld的理解,下面说说我的经验: 首先,要确定我们的程序用没有用到标准的c库,或者一些系统的库文
  • /opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/../lib/gcc/arm-fsl-linux-gnueabi/4.6.2/../../../../arm-fsl-linux-gnueabi/bin/ld: cannot find -lbluetooth ...
  • Ubuntu交叉编译的应用程序在Qualcomm...c/oe-core/build/tmp-eglibc/work/armv7a-vfp-neon-oe-linux-gnueabi/dinstar-git-r1/ dinstar /usr/bin/dinapp: eval: line 1: arm-oe-linux-gnueabi-gcc: not foundn/usr/bin #
  • 当用mips64el-unknown-linux-gnu-gcc编译一个t.c的文件时, t.c的内容如下: #include int main() {  return 0; } mybox ~ # mips64el-unknown-linux-gnu-gcc -c t.c mybox ~ # mips64el-unknown-...
  • 1.arm-none-linux-gnueabi-gcc下载http://www.veryarm.com/arm-none-linux-gnueabi-gccarm-none-linux-gnueabi-gcc是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM...
  • arm-linux-ld 用于将多个目标文件、库文件链接成可执行文件。 介绍 “ -T ” 选项,可以直接使用它来指定代码段、数据段、bss 段的起始地址,也可以用来指定一个链接脚本,在链接脚本中进行更复杂的地址设置。 ...
  • 23089249-id-4762021.html下载expect源码,tcl源码先交叉编译tclcd /home/mit/update/tcl8.6.8/unixCC=arm-poky-linux-gnueabi-gcc AR=arm-poky-linux-gnueabi-ar LD=arm-poky-linux-gnueabi-ld...
  • 在Linux中使用arm-2009q3编译工具链编译时,其中arm-none-linux-gnueabi-ld 链接器出现警告:arm-linux-ld: warning: cannot find entry symbol _start; defaulting to 00000000 原因:这句警告的意思就是说链接...
  • root@Ubuntu32:/home/zhangbin/android/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin# ls arm-linux-androideabi-addr2line arm-linux-androideabi-gprof arm-linux-androideab
  • arm-linux-ld

    2013-03-28 09:54:38
    一、arm-linux-ld的作用: 将多个目标文件、库文件连接成可以执行文件. 二、arm-linux-ld的实际使用: 主要分两种形式: 1.直接指定代码段、数据段、BSS段的起始地址.使用格式如下: -Ttext startaddr//代码段的...
1 2 3 4 5 ... 20
收藏数 66,816
精华内容 26,726
热门标签