原创 Linux下的编程

2014-8-4 19:00 768 5 7 分类: MCU/ 嵌入式

--------------------------------------------------linux C编程--------------------------------------------------

标准c

E.g:

 #include    --->  函数原型声明

 

 int main()

 {

  printf("hello !\n");

  return  0;

 }

 

  *.c    --->   *.i   ---->   *.S    ---->   *.o   ----->   elf  (类似于bin  exe)

        预处理       编译器         汇编器          链接

 

  链接: 将各个语句段和数据进行地址编排,重定位执行顺序及地址  ----> 单片机(分散加载:ro rw

 

★快速打开编辑环境:

  sudo gedit test.c

 

  1 linux 系统是多任务操作系统,需要知道各个任务执行返回的结果,所以需要有返回值。

E.g

 int main()

 {

  printf("hello !\n");

  return  0;   ---->  0:成功执行完毕  , 负数:运行异常

 }

 

 2linux系统在运行程序时,可以给程序传递运行参数,所以main程序可以带形参。

E.g

   int main(int argc ,char **argv)

 {

  printf(" arg = %d\n",argc);

  return  0;   ---->  0:成功执行完毕  , 负数:运行异常

 }

 

其中:

 argc  --->  指示当前命令行传递的参数个数

 argv  --->  指示当前命令行传递的参数内容

 

 3) 所调用的库函数均需要声明或者自定义----> 需要包含对应的头文件。

E.g:

 #include    --->  函数原型声明

 

 int main()

 {

  printf("hello !\n");

  return  0;

 }

 

补充:在Linux系统中,可使用  man 3 printf 获取头文件信息(q:退出查询 3:代表查询的是第3本手册)

 

4) 编译程序

 

   gcc test.c   --->  得到a.out(该文件为UNIX 默认生成文件,Linux袭用)

 

   gcc  test.c -o test  --->test.cC文件编译成名为testelf可执行程序

 

5) 查看生成文件的属性

 

  file  test

 

test: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x12872754343d99b267f3580e3d2e5829b5304273, not stripped

 

  文件类型:  ELF   ---> linux 可执行程序的格式

  属性:      executable   ----> 可执行

  链接方式:  dynamically linked (uses shared libs)  动态链接

  符号优化:  not stripped   ---> 符号信息完整,未被删除  ---> 提供于程序调试

 

6)执行程序

 

   ./test      ----> 表示在当前路径运行test

 

程序示例:

#include

 

int main(int argc, char **argv)

{

       int i;

       printf("Hello World!\n");

       printf(" arg = %d\n",argc);

        for(i=0;i

              printf(" argv[%d] = %s\n",i,argv);

       return 0;

}

结果如下:

zhoujd@ubuntu:~/test_c$ ./test

Hello World!

 argc = 1

 argv[0] = ./test

zhoujd@ubuntu:~/test_c$ ./test  123

Hello World!

 argc = 2

 argv[0] = ./test

 argv[1] = 123

zhoujd@ubuntu:~/test_c$ ./test  123 15647869789

Hello World!

 argc = 3

 argv[0] = ./test

 argv[1] = 123

 argv[2] = 15647869789

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户1773117 2014-8-9 08:33

如何给KERNEL编程呢。包含什么头文件呢。内核编程在REDHAT LINEX下。

用户1435822 2014-8-7 08:24

写的蛮好的!
相关推荐阅读
用户441318 2014-12-04 00:05
共用体、枚举类型的理解与应用
------------------------------------------------------联合体-------------------------------------------...
用户441318 2014-09-20 15:29
结构体,结构体大小,结构体指针
---------------------------------------------------结构体---------------------------------------------...
用户441318 2014-08-28 20:51
数组与指针
-------------------------------------------指针操作-----------------------------------------------------...
用户441318 2014-08-23 12:23
函数与指针
-------------------------------------------------------函数-------------------------------------------...
用户441318 2014-08-17 10:58
C语法精讲2
-----------------------------------------------控制流------------------------------------------------...
用户441318 2014-08-09 17:33
C语法精讲1
·一般的程序如下: 程序  =  数据结构  + 算法      数据结构含有基本数据和复杂数据,即我们将要交给计算机运算的量 因为数据量 ----> 大小 ----> 存储空...
我要评论
2
5
关闭 站长推荐上一条 /3 下一条