linux编程学习4-从HelloWorld开始

一、HelloWorld

1、源码

 #include <stdio.h>
  
  int main(int argc, char *argv[]) {
      printf("Hello World\n");
 
      return 0;
  }

2、编译,链接,执行程序


返回值:int,整形;0表示成功执行,非0表示由于某种原因执行失败

参数argc:int,参数个数,例如命令行执行 ./HelloWorld,argc = 1;./HelloWorld test,argc = 2

参数argv:字符指针数组,例如命令行执行 ./HelloWorld,argc = 1,argv[0] = ./HelloWorld; ./HelloWorld test,argc = 2,argv[0] = ./HelloWorld,argv[1] = test

为了证明上面所说的情况,将代码稍作修改如下:

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Hello World\n");
    printf("%d\n", argc);
    
    for (int i = 0; i < argc; ++i) 
        printf("%s\n", argv[i]);
    
    return 0;
}


二、头文件

头文件是用来定义常量,声明函数,类,结构体等;linux环境下,大部分头文件都在/usr/inclue目录及其子目录中,那些依赖于特定linux版本的的头文件通常在/usr/include/sys和/usr/include/linux目录下

1.在调用C/C++编译器中,用 -I选项包含在子目录或非标准位置中的头文件

例如:我的chapter1目录下有test.cpp文件,代码如下:

#include "test.h"

int main(int argc, char *argv[]) {
    printTest("Hello World");
    
    return 0;
}

void printTest(const char *ch) {
    printf("%s\n", ch);
}


而test.h文件在chapter1目录的上一级目录下

test.h源码如下:

#include <stdio.h>

void printTest(const char *ch);                               


此时不加任何选项的情况下,编译程序将发生报错如下


但加入 -I .. 将test.h所在的文件夹包含进来,再次编译,链接,执行成功



2.grep命令搜索包含某些特定定义和函数原型

例如:grep printf *.h :表示在当前目录下所有以.h结尾的文件中搜索printf


三、库文件

库是一组预先编译好的函数集合,并依据可重用的原则编写;linux环境下,标准库文件一般存放在/lib和/usr/lib目录下;库文件的名字总是以lib开头(以lib开头方便编译器快速查找到库文件),随后的部分指明这是什么库函数,文件名的最后部分以.开头,最后给出库文件的类型:.a,代表静态函数库,.so,代表共享函数库

1.用库所在的完整路径名或者-l选项告诉编译器要搜索的库文件


g++ -o Hello HelloWorld.cpp /user/lib64/libm.so    这条命令告诉编译器编译HelloWorld.cpp文件,并将生成的程序命名为Hello,并告诉编译器,除了搜索标准库外,还搜索数学库解决引用数学库函数的问题

g++ -o Hello HelloWorld.cpp -lm  达到的效果同上,但用-l选项如果有共享库,编译器会优先选用共享库

2.通过-L选项为编译器增加库的搜索路径

g++ -o Hello -L /usr/lib64 HelloWorld.cpp -lm 这条命令用/usr/lib64下的libm库来编译和链接Hello

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值