Linux环境下如何编译和执行c程序教程-linux运维-学派吧

本篇文章给大家带来的内容是介绍Linux环境下如何编译和执行c程序?(详解) 。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

1 单个文件的编译和执行

创建main.c文件,内容如下:

#include <stdio.h>#include <stdlib.h>int main(void){
printf("Hello world!\n");return 0;
};

编译:

gcc -o main main.o

执行:

root@ubuntu:/ybg/python# ./main
Input an integer:10sum=55

2 多个文件的编译和执行
创建sum.c文件,内容如下:

#include <stdio.h>#include <stdlib.h>int sum(int x){int i, result=0;for(i=0; i<=x; i++){
result+=i;
}if(x > 100)
exit(-1);return result;
};

创建main.c文件,内容如下:

#include <stdio.h>#include <stdlib.h>int main(void){int x;
printf("Input an integer:\n");
scanf("%d", &x);
printf("sum=%d\n", sum(x));return 0;
};

编译

gcc -c sum.c -fPIC -o sum.ogcc -c main.c -fPIC -o main.o

生成可执行文件,文件名为main

gcc -o main sum.o main.o

执行程序

./main

执行结果同上

3 使用动态链接库方式

生成动态链接库

gcc sum.o -shared -o sum.so

生成可执行文件,文件名为main

gcc -o main sum.o main.o

执行

./main

如果有以下报错,说明在默认的动态链接库路径下没有找到刚刚生成的sum.so

./main: error while loading shared libraries: sum.so: cannot open shared object file: No such file or directory

执行以下命令,将当前目录添加到动态链接库查找路径环境变量

export LD_LIBRARY_PATH=pwd:$LD_LIBRARY_PATH

再次执行

./main

执行结果同上

4 python调用.so动态链接库

创建test.py文件,内容如下:

import ctypes
so = ctypes.CDLL('./sum.so')print "so.sum(50) = %d" % so.sum(50)

执行

root@ubuntu:/ybg/python# python test.py 
so.sum(50) = 1275

以上就是Linux环境下如何编译和执行c程序?(详解)的详细内容,更多请关注学派吧其它相关文章!

主题测试文章,只做测试使用。发布者:云大使,转转请注明出处:https://www.xp8.net/server/1952.html

(0)
打赏 微信扫一扫 微信扫一扫
如何查看云服务器 ECS 公网流量统计总和-linux运维-学派吧
上一篇 2018年11月21日 下午11:48
下一篇 2018年11月21日 下午11:48

相关推荐

  • Linux解压gz文件的命令使用教程及详解

    今天小编给带来一篇linux解压方面的资料 Linux解压gz文件的命令有:gunzip命令、gzip命令、tar命令。下面本篇文章就来带大家了解一下 gz文件是一种压缩文件,以.gz或者.tar.gz(.tgz)为扩展名,在Linux、UNIX和OSX下常见,Linux和OSX都可以直接解压使用这种压缩文件。在Windows下常用压缩软件WinRAR打开g…

    2019年3月13日
    87.5K00
  • Linux下alias命令的用法介绍-linux运维-学派吧

    本篇文章给大家带来的内容是关于Linux下alias命令的用法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 最近在使用ssh连接远程机器敲了类似ssh -i ~/.ssh/138.pem ec2-user@192.168.21.138 这么长一串命令的时候被我们的运维吐槽了一波,遂给我安利了这个命令 1.alias的使用 alias命…

    服务器运维 2018年11月21日
    2.1K00
  • Ansible自动部署nginx+keepalived高可用负载均衡教程及方法

    今天学派吧给大家分享一篇关于负载均衡的教程 1. 部署前准备工作 2. Ansible主机与远程主机秘钥认证 3. 安装配置Ansible 4. 编写roles,实现web的部署 5. 编写roles角色部署nginx+keepalived 6. 编写roles角色 7. 其他问题 本篇文章记录通过Ansible自动化部署nginx的负载均衡高可用,前端代理…

    2018年10月11日
    2.6K00
  • centos/ Linux如何配置文件和目录访问权限教程

    Unix和Linux操作系统分别给三个组(所有者,组和其他用户)中的每一个分配三种访问类型(读取,写入和执行)中的一个来设置对文件和目录的访问权限。下面本篇文章就来带大家了解一下在Unix / Linux如何配置文件和目录访问权限,希望对大家有所帮助。 如何查看文件和目录访问权限? 我们可以使用带有-l选项的ls命令来列出文件属性的详细信息,例如 ls -l…

    2019年3月23日
    3.9K00
  • Linux 小白数据误删如何实例数据恢复

    本文以操作系统为 CentOS 7 的腾讯云云服务器为例,为您介绍如何使用开源工具 Extundelete 快速恢复被误删除的数据。 Extundelete 支持文件系统类型为 ext3 及 ext4 的文件误删恢复,但具体恢复程度与删除后是否被写覆盖、元数据是否存留在 journal 等因素有关。若需恢复数据的文件系统位于系统盘,且一直有业务进程或系统进程…

    2026年1月13日
    48100

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

工作时间:周一至周五,9:30-18:30,节假日休息

添加微信
添加微信
分享本页
返回顶部