精华内容
下载资源
问答
  • Linux-C动态库与静态库的编译与调用

    万次阅读 多人点赞 2018-07-25 16:44:24
    Linux-C动态库与静态库的编译与调用 一、简述 记录-Linux-C动态库与静态库的编译与调用。将实现某部分功能的代码封装成库文件,以方便调用,或者是对代码进行保护加密。应用场景:有时想将某代码提供给别人用,...

    Linux-C动态库与静态库的编译与调用

    一、简述

              记录-Linux-C动态库与静态库的编译与调用。将实现某部分功能的代码封装成库文件,以方便调用,或者是对代码进行保护加密。应用场景:有时想将某代码提供给别人用,但是又不想公开源代码,这时可以将代码封装成库文件。在开发中调用其他人员编写的库。

          动态库特点:
            1,库的代码不会编译进程序里面,所以动态库编译的程序比较小。
            2,由动态库编译的程序依赖于系统的环境变量有没有这个库文件,没有则运行不了。

         静态库特点:
            1,库的代码会编译进程序里面,所以静态库编译的程序比较大
            2,由静态库编译的程序不用依赖于系统的环境变量,所以环境变量有没有这个库文件,也可以运行。

     

    二、动态库的编译与调用

           1、创建目录:mkdir dynamic;进入dynamic目录:cd dynamic;新建c文件:vi func.c

                   

           2、编辑func.c内容如下,(记得保存)

                  

           3、 将func.c编译为动态库,编译命令:

                gcc func.c -o func.o -c -fPIC
                gcc func.o -shared -o libfunc.so               (注其中libfunc.so,lib为前缀,.so是后缀,中间func是库的名字)

                   

           4、 在dynamic路径下新建main.c文件:vi main.c;在main.c中调用动态库中的func()函数。

                  

           5、    因为fun.c与main.c在同一路径,避免干扰,删除fun.c,func.o文件;命令:rm func.c func.o

                 

          6、    编译main.c并调用动态库libfunc.so。命令:gcc main.c -o main -L 库的路径 -l 库名    

                  gcc main.c -o main -L . -l func            (点代表当前路径)

                 

          7、   执行main,找不到库

                  

           8、 需要将动态库拷贝一份到/usr/lib/路径下,命令:sudo cp libfunc.so /usr/lib     (需要超级权限);执行:./main

                  

    三、静态库的编译与调用

            1、创建目录:mkdir static;进入static目录:cd static;新建c文件:vi func.c

                  

            2、编辑func.c内容如下,(记得保存)      

                  

         3、 将func.c编译为静库,编译命令:

                gcc func.c -o func.o -c 
                ar -crv libfunc.a func.o               (注lib为前缀,静态库以.a为后缀,中间部分func为库的名字)

                

         4、 在static路径下新建main.c文件:vi main.c;在main.c中调用静态库中的func()函数。

                

         5、    因为fun.c与main.c在同一路径,避免干扰,删除fun.c,func.o文件;命令:rm func.c func.o

               

         6、 编译main.c并调用静态库libfunc.so。命令:gcc main.c -o main -L 库的路径 -l 库名    

                gcc main.c -o main -L . -l func            (点代表当前路径)

              

         7、执行:./main          (不需要将静态库拷贝到/usr/lib/)

              

       四、静态编译

            我们通常用的是动态编译,比如说调用标准库的printf()函数,printf()的代码不会直接全部的编译到可执行文件,而是相当于在可执行程序中链接调用printf()函数。这样可执行文件的大小就不会很大,但是可执行程序的运行环境必需要含有其所需要的库文件等。静态编译,就是将程序所调用到的代码全部编译到可执行文件,所以编译出来的可执行文件比较大,但是它无需过多依赖运行环境。

            比如在桌面创建hello.c;命令:vi hello.c 。编辑内容如图

            

            动态编译:gcc hello.c -o hello_dynamic          静态编译:gcc hello.c -o hello_static -static

           

     

    =====================以下回复 star火 =================

    在CentOS6.9测试的效果。尝试设置export LD_LIBRARY_PATH=/yourlibpath/:$LD_LIBRARY_PATH

    其中yourlibpath是libfunc.so的存放路径。

    展开全文
  • Linux-C C语言编译过程

    千次阅读 2018-07-18 20:32:55
    Linux-C C语言编译过程 一、简述  GCC(GNU Compiler Collection,即 GNU 编译器套装),是一套由 GNU 开发的编程 语言编译器。简单介绍使用gcc编译器将hello.c文件编译成为hello可执行文件的过程。 在伪...

    Linux-C C语言编译过程

    一、简述

        GCC(GNU Compiler Collection,即 GNU 编译器套装),是一套由 GNU  开发的编程 语言编译器。简单介绍使用gcc编译器将hello.c文件编译成为hello可执行文件的过程。

    在伪终端下输入如下命令

    Liang@ubuntu:~$ gcc hello.c -o hello           (这个命令包括了编译的四个阶段:预处理、编译、汇编、链接)

    含义:用 gcc 这个工具编译 hello.c,并生成一个二进制文件 hello。 其中 –o 的意义是 output,指明要生成的文件的名称,如果不写 –o hello ,默认生成  a.out 文件(Linux下.out后缀的是可执行文件,相当于windows下的.exe文件)。完成了从 C 源程序到 ELF 格式(Linux 系统下的可执行文件的格式)的全部步骤,生成的文件 hello是一个可以直接运行的二进制文件。

     

     

    二、编译过程

    1、预处理

               GCC 在第一个阶段会调用预处理器 cpp 来对 C 源程序进行预处理,预处理就是 解释源程序当中的所有的预处理指令,如#include(文件包含)、#define(宏定义)、#if(条件编译) 等以井号’#’开头的 语句就是预处理指令。这些预处理指令将会在预处理阶段被解释掉,比如会把文件包含语句所指定 的文件拷贝进来,覆盖掉原来的#include 语句,所有的宏定义被展开,所有的条件编译语句将被执行等。除了处理这些预处理指令之外,GCC 还会把程序当中的注 释删除,另外添加必要的调试信息。

              使用预处理命令:gcc hello -o hello.i -E 来获得预处理后的文件。

    2、编译

             将经过预处理之后生成的.i 文件进一步的翻译,它包括词法和语法的分析, 最终生成对应硬件平台的汇编语言,具体生成什么平台 的汇编文件取决于所采用的编译器,如果用的是 GCC,那么将会生成 x86 格式的汇编文件,如果用的是针对 ARM 平台的交叉编译器,那么将会生成 ARM 格式的汇编文件。

               使用命令: gcc hello.i -o hello.s -S 获得 C 源程序经过预处理和编译之后的汇编程序。

    3、汇编

                编译器 gcc 调用汇编器 as 将汇编源程序翻译成 为可重定位文件。汇编指令跟处理器直接运行的二进制指令流之间基本是一一对应的关系, 该阶段只将.s 文件里面的汇编翻译成相应的指令。

             使用命令:gcc hello.s -o hello.o -c  获得汇编后的文件。

           生成的.o 文件是一个 ELF 格式的可重定位(relocatable)文件,所谓的可重定位,指的是该文件虽 然已经包含可以让处理器直接运行的指令流,但是程序中的所有的全局符号尚未定位,所谓 的全局符号,就是指函数和全局变量,函数和全局变量默认情况下是可以被外部文件引用的, 由于定义和调用可以出现在不同的文件当中,因此他们在编译的过程中需要确定其入口地 址,比如 a.c 文件里面定义了一个函数 func( ),b.c 文件里面调用了该函数,那么在完成第 三阶段汇编之后,b.o 文件里面的函数 func( )的地址将是 0,显然这是不能运行的,必须要 找到 a.c 文件里面函数 func( )的确切的入口地址,然后将 b.c 中的“全局符号”func 重新定 位为这个地址,程序才能正确运行。因此,接下来需要进行第四个阶段:链接、链接到其他文件。

    4、链接

            链接系统的标准 C 库、gcc 内置库等基本库文件。

    使用命令:gcc hello.o -o hello -lc -lgcc  链接生成可执行文件,-lc 和-lgcc 是默认的,可以省略。

            链接还会合并相同权限的段(section)。一个可执行镜像文件可以由多个可重定位文件链接而成,比如 a.o,b.o,c.o 这三个可重定位文件链接生成一个叫 做 x 的可执行文件( ELF 格式)ELF 格式是符合一定规范的文件格式,里面包含很多段(section),其中.text 段存放了运行代码,.data 段里面存放了已经初始化了的全局变量和静态局部变量,.rodata 段存放了程序中所有的常量等等,除了这些程序运行时需要用得到的代码和数据之外,还有一些是程序在 从磁盘加载到内存时需要提供给加载器的辅助信息,比如提供代码重定位信息的.rel.text 段, ELF 格式文件中的符号表.symtab 段等,这些信息将会在程序加载完毕之后被丢弃,而不会 存在于程序运行的内存当中。将多个不同的可重定位 ELF 格式文件链接成一个可执行 ELF 格式文件的过程中,会将它们不同的各个段按照“执行视图”合并起来,简言之,就是将具有相同权限的段合并到一起,比如各个文件中的具有只读权限的.text 段和.rodata 段将会被合并到一起,当程序有多个执行实例(多个进程)时,这些 执行实例会共享一个只读段的副本,从而节省内存空 间。

                         

    三、总结

         objdump是linux下一款反汇编工具,能够反汇编目标文件、可执行文件。比如反汇编hello可执行文件:(部分截图)

                  

    命令选项

    --archive-headers 
    -a 
    显示档案库的成员信息,类似ls -l将lib*.a的信息列出。 
    
    -b bfdname 
    --target=bfdname 
    指定目标码格式。这不是必须的,objdump能自动识别许多格式,比如: 
    
    objdump -b oasys -m vax -h hello.o 
    显示hello.o的头部摘要信息,明确指出该文件是Linux系统下用gcc编译器生成的目标文件。objdump -i将给出这里可以指定的目标码格式列表。 
    
    -C 
    --demangle 
    将底层的符号名解码成用户级名字,除了去掉所开头的下划线之外,还使得C++函数名以可理解的方式显示出来。 
    
    --debugging 
    -g 
    显示调试信息。企图解析保存在文件中的调试信息并以C语言的语法显示出来。仅仅支持某些类型的调试信息。有些其他的格式被readelf -w支持。 
    
    -e 
    --debugging-tags 
    类似-g选项,但是生成的信息是和ctags工具相兼容的格式。 
    
    --disassemble 
    -d 
    从objfile中反汇编那些特定指令机器码的section。 
    
    -D 
    --disassemble-all 
    与 -d 类似,但反汇编所有section. 
    
    --prefix-addresses 
    反汇编的时候,显示每一行的完整地址。这是一种比较老的反汇编格式。 
    
    -EB 
    -EL 
    --endian={big|little} 
    指定目标文件的小端。这个项将影响反汇编出来的指令。在反汇编的文件没描述小端信息的时候用。例如S-records. 
    
    -f 
    --file-headers 
    显示objfile中每个文件的整体头部摘要信息。 
    
    -h 
    --section-headers 
    --headers 
    显示目标文件各个section的头部摘要信息。 
    
    -H 
    --help 
    简短的帮助信息。 
    
    -i 
    --info 
    显示对于 -b 或者 -m 选项可用的架构和目标格式列表。 
    
    -j name
    --section=name 
    仅仅显示指定名称为name的section的信息 
    
    -l
    --line-numbers 
    用文件名和行号标注相应的目标代码,仅仅和-d、-D或者-r一起使用使用-ld和使用-d的区别不是很大,在源码级调试的时候有用,要求编译时使用了-g之类的调试编译选项。 
    
    -m machine 
    --architecture=machine 
    指定反汇编目标文件时使用的架构,当待反汇编文件本身没描述架构信息的时候(比如S-records),这个选项很有用。可以用-i选项列出这里能够指定的架构. 
    
    --reloc 
    -r 
    显示文件的重定位入口。如果和-d或者-D一起使用,重定位部分以反汇编后的格式显示出来。 
    
    --dynamic-reloc 
    -R 
    显示文件的动态重定位入口,仅仅对于动态目标文件意义,比如某些共享库。 
    
    -s 
    --full-contents 
    显示指定section的完整内容。默认所有的非空section都会被显示。 
    
    -S 
    --source 
    尽可能反汇编出源代码,尤其当编译的时候指定了-g这种调试参数时,效果比较明显。隐含了-d参数。 
    
    --show-raw-insn 
    反汇编的时候,显示每条汇编指令对应的机器码,如不指定--prefix-addresses,这将是缺省选项。 
    
    --no-show-raw-insn 
    反汇编时,不显示汇编指令的机器码,如不指定--prefix-addresses,这将是缺省选项。 
    
    --start-address=address 
    从指定地址开始显示数据,该选项影响-d、-r和-s选项的输出。 
    
    --stop-address=address 
    显示数据直到指定地址为止,该项影响-d、-r和-s选项的输出。 
    
    -t 
    --syms 
    显示文件的符号表入口。类似于nm -s提供的信息 
    
    -T 
    --dynamic-syms 
    显示文件的动态符号表入口,仅仅对动态目标文件意义,比如某些共享库。它显示的信息类似于 nm -D|--dynamic 显示的信息。 
    
    -V 
    --version 
    版本信息 
    
    --all-headers 
    -x 
    显示所可用的头信息,包括符号表、重定位入口。-x 等价于-a -f -h -r -t 同时指定。 
    
    -z 
    --disassemble-zeroes 
    一般反汇编输出将省略大块的零,该选项使得这些零块也被反汇编。 

     

    展开全文
  • linux-C子进程退出信号

    千次阅读 2015-09-09 21:31:15
    linux-C子进程退出信号 开源中国 发表于 2014-09-04 21:18:28 #include #include #include #include #include void signal_hander() {//处理子进程退出信号 int child_status; wait(&...

    linux-C子进程退出信号

    开源中国

    开源中国

    发表于 2014-09-04 21:18:28

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <signal.h>
    
    void signal_hander()
    {//处理子进程退出信号
     int child_status;
    wait(&child_status);
     printf("child exited.n");
    }
    int main(int argc,char **argv)
    {//进程
     pid_t pid;
     int child_status;
    signal(SIGCHLD,signal_hander);
     if ((pid=fork())==0){
     printf("child process run!n");
    exit(0);
    }else{
     printf("parent process run!n");
    sleep(10);
    }
    exit(0);
    }
    
     deepfuture-lx@deepfuture-lx-desktop:/media/LX/deepfuture$ gcc -o test10 test10.ctest10.c: In function ‘main’:

    test10.c:20: warning: incompatible implicit declaration of built-in function ‘exit’

    test10.c:26: warning: incompatible implicit declaration of built-in function ‘exit’

    deepfuture-lx@deepfuture-lx-desktop:/media/LX/deepfuture$ ./test1

    0parent process run!

    child process run!

    child exited.

    展开全文
  • <br />/home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/fusion/fusiondev.c: In function ‘fusion_sleep_on’: /home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/...

    /home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/fusion/fusiondev.c: In function ‘fusion_sleep_on’:

    /home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/fusion/fusiondev.c:98: error: ‘TASK_INTERRUPTIBLE’ undeclared (first use in this function)

    /home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/fusion/fusiondev.c:98: error: (Each undeclared identifier is reported only once

    /home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/fusion/fusiondev.c:98: error: for each function it appears in.)

    /home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/fusion/fusiondev.c:103: error: implicit declaration of function ‘schedule_timeout’

    /home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/fusion/fusiondev.c:105: error: implicit declaration of function ‘schedule’

    /home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/fusion/fusiondev.c: In function ‘fusion_flush’:

    /home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/fusion/fusiondev.c:386: error: dereferencing pointer to incomplete type

    /home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/fusion/fusiondev.c:386: error: ‘PF_EXITING’ undeclared (first use in this function)

    /home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/fusion/fusiondev.c:387: error: dereferencing pointer to incomplete type

    /home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/fusion/fusiondev.c: In function ‘lounge_ioctl’:

    /home/dylan/gtk_directfb/linux-fusion-8.1.1/linux/drivers/char/fusion/fusiondev.c:448: error: ‘TASK_INTERRUPTIBLE’ undeclared (first use in this function)

    解决方法:linux/drivers/char/fusion/fusiondev.c 文件增加 #include <linux/fusion.h>

        38 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 2)

        39 #include <linux/device.h>

        40 #endif

        41 //dylan 7.5

     +42 #include <linux/sched.h>

        43 

        44 #include <linux/fusion.h>

    展开全文
  • 编译分四个阶段:①预处理②编译③汇编④链接以main.c为例: arm-xilinx-linux-gnueabi-gcc -o main mian.c 执行全部过程生成main.out,如果不指定mian,默认输出a.out arm-xilinx-linux-gnueabi-gcc -c main.c 只...
  • 在linux中安装arm-linux-gcc

    千次阅读 2019-03-06 10:03:11
    1.下载amr-linux-gcc-4.4.3:...2.解压命令tar xvzf arm-linux-gcc-4.4.3 -C / (自动解压到系统根目录下路径为:/usr/local/arm) 3.配置编译环境路径: 在#/usr/local/arm下输入:vi /etc/prof...
  • 读书笔记---arm-linux-objdump命令解析

    千次阅读 2015-04-25 15:40:50
    arm-linux-objdump命令用于显示二进制文件的信息,也可以用来查看反汇编代码,使用格式如下: arm-linux-objdump [-a] [-b bfdname | –target=bfdname] [-C] [–debugging] [-d
  • arm-none-linux-gnueabi-gcc编译标准库引用

    千次阅读 2018-11-07 15:08:20
    采用arm-none-linux-gnueabi-gcc编译的时候会出现...[root@localhost wpcode]# arm-none-linux-gnueabi-gcc *.c -fPIC -shared -o libsdk.so  opensslRsa.c:3:30: error: openssl/ossl_typ.h: No such file or di...
  • 2b19de01a000-2b19de01c000 rw-p 001bf000 08:0c 786458 /lib/x86_64-linux-gnu/libc-2.19.so 2b19de01c000-2b19de021000 rw-p 00000000 00:00 0 2b19de021000-2b19de703000 r--p 00000000 08:0c 138526 /usr/lib/...
  • home/bupt/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/include-fixed/limits.h:169:61: error: no include path in which to search ...
  • 安装交叉编译工具链: ...3、解压命令tar xvzf arm-linux-gcc-4.3.2 -C / 注意以上命令必须要有-C而且是大写,后边有个空格也要注意。 4、配置下编译环境路径 在控制台下输入 gedit /root/.bashrc 等一会出
  • Linux--用户与组的管理

    千次阅读 2020-07-02 12:04:33
    Linux--用户与组的管理用户的创建与删除useradd命令usermod命令userdel命令为用户创建密码更改用户密码信息组的创建与...-c 为用户添加文本描述 -d 为主目录指定不同于登录名的名称 -m 创建用户的家目录(默认创建) -M
  • arm-linux-gcc-4.3.2.tgz 安装

    千次阅读 2012-06-07 00:32:15
    2.解压 tar -zxvf arm-linux-gcc-4.3.2.tgz -C / 3.根据解压过程可以看出arm-linux-gcc-4.3.2.tgz 被解压到/usr/local/arm/4.3.2/ 目录下 4.终端运行,察看版本 /usr/local/arm/4.3.2/bin/arm-linux-gcc
  • 当用mips64el-unknown-linux-gnu-gcc编译一个t.c的文件时, t.c的内容如下: #include int main() ...mybox ~ # mips64el-unknown-linux-gnu-gcc -c t.c mybox ~ # mips64el-unknown-linux-gnu-ld -o
  • Step 1:解压缩 ...#tar -xvzf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz –C / 注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。 这样 arm-linux-
  • centOS下arm-linux-gcc安装

    千次阅读 2016-05-16 20:37:33
    下载arm-linux-gcc的安装包, ... tar zxvf arm-linux-gcc 这样解压的话就在当前目录下面 ... tar zxvf arm-linux-gcc -C /opt 这样就是解压到了opt目录下,把arm-linux-gcc添加到环境里面,就可以直接使用了
  • 首先要有配置好的环境,本文使用的编译环境如下:主机系统:Ubuntu 9.10主机编译器:gcc 版本 4.4.1 (Ubuntu 4.4.1-4ubuntu8)交叉编译器:arm-linux-gcc-4.0.1软件资源:qt-embedded-linux-opensource-src-4.5.3.tar...
  • IDE: eclipse 交叉编绎工具链: arm-linux-gcc 一. 安装 arm-linux-gcc 二. 安装 eclipse 三. 安装 jdk 四. 配置eclipse
  • make: powerpc-e300c3-linux-gnu-g++:命令未找到 解决办法:切换用户,使用powerpc-e300c3-linux-gnu-g++所属用户,我的所属用户为root,所以只需要切换到root用户就可以了! 需要添加环境变量是需要在/...
  • arm-fsl-linux-gnueabi-gcc -o simplescan simplescan.c -I/usr/include/ -I/usr/include/i386-linux-gnu -L/usr/lib/i386-linux-gnu 编译提示 simplescan.c:(.text+0x84): undefined reference to `hci_get_route...
  • arm-linux-gcc-4.3.2 交叉编译器的安装

    千次阅读 2014-08-22 08:11:49
    1. arm-linux-gcc-4.3.2.tgz 百度云下载地址:http://pan.baidu.com/s/1c0iZxAw 密码:p92i arm-linux-gcc-4.3.2.tgz 是已经编译好的源码包,下载后解压缩就能够使用,不需要自己编译 在linux系统下可以使tar命令...
  • arm-linux-gcc的使用

    千次阅读 2017-09-20 08:54:56
    arm-linux-gcc -E -o *.i *.c/*.S 2)编译:将“.i”目标文件编译生成“.s”汇编文件 arm-linux-gcc -S -o *.s *.c 3) 汇编:将编译得到的“.s”汇编文件按照给定的指令集转换成符合一定格式的机器码 ...
  • 详细错误如下: /home/quantum6/nanjing/android-ndk-r20b/toolchains/arm-linux-android...prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc is unable to create an executable file. C compiler test fai...
  • jdk-8u91-linux-x64.tar.gz

    千次下载 热门讨论 2016-04-20 12:35:37
    jdk-8u91-linux-x64.tar.gz java jdk-8u91 linux-x64 .tar.gz 截至2016.04.20 最新版JDK For Linux x64 gar.gz sha256: 6f9b516addfc22907787896517e400a62f35e0de4a7b4d864b26b61dbe1b7552 md5: 3f3d7d0cd70bfe0...
  • Arm-linux-gcc-4.3.2安装步骤

    千次阅读 2012-04-12 11:22:22
     3、解压命令tar xvzf arm-linux-gcc-4.3.2 -C /  注意以上命令必须要有-C而且是大写的后边有个空格也要注意   4、配置下编译环境路径 在控制台下输入 gedit /root/.bashrc 等一会出来文本编辑器后在文件
  • 转自:http://hanzhiguo078426.blog.163.com/blog/static/236447182012269744622/ 转自:... tar -zxvf arm-linux-gcc-4.5.1.tar.gz -C / 或者 tar -zxvf arm-linux-gcc-4.5.
  • arm-linux-gcc-4.3.2.tgz安装方法

    千次阅读 2012-02-02 11:47:13
    先将arm-linux-gcc-4.3.2.tgz文件放在/tmp目录下 ...#tar zxvf arm-linux-gcc-4.3.2.tgz -C / 注意:arm-linux-gcc-4.3.2.tgz后面是大写的C,而且大写的C与斜线/之间有空格。 解压之后就产生了如下目录 /u
  • Linux--cut命令总结

    千次阅读 2019-03-13 09:44:57
    -c :以字符(characters)为单位进行分割。 -d :自定义分隔符(delimiter),默认为制表符。 -f :与-d一起使用,按d指定的分隔符分割后,指定显示哪个区域(fields)。 -n :取消分割多字节字符。仅和 -b 标志一起...
  • 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 #

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 199,365
精华内容 79,746
关键字:

linux-c

linux 订阅