Linux环境下如何编译和执行c程序?(详解)

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

1 单个文件的编译和执行

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

#include #include int main(void){printf("Hello world!n");return 0;};

编译:

gcc -o main main.o

执行:

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

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

#include #include int sum(int x){int i, result=0;for(i=0; i 100)exit(-1);return result;};

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

#include #include int main(void){int x;printf("Input an integer:n");scanf("%d", &x);printf("sum=%dn", 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 使用动态链接库方式

生成动态链接库

豆包AI编程 豆包AI编程

豆包推出的AI编程助手

豆包AI编程 483 查看详情 豆包AI编程

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 ctypesso = 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程序?(详解)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/341061.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
win8怎么截图整个屏幕_win8全屏截图快捷键与操作方法
上一篇 2025年11月5日 18:20:36
thinkphp和smarty是什么
下一篇 2025年11月5日 18:20:49

相关推荐

  • 如何在Linux中处理挂载失败问题?

    挂载失败通常因设备路径错误、文件系统损坏、权限不足或内核模块缺失引起。首先使用lsblk或fdisk -l确认设备存在并核对路径拼写,必要时重新插拔外接设备查看dmesg日志;接着通过file -s或blkid检查文件系统类型,若为NTFS需安装ntfs-3g工具包,exFAT则需exfat-fus…

    2026年9月9日
    300
  • 如何在Linux中统计目录大小?

    使用du命令可统计Linux目录大小,如du -sh查看总大小,du -h –max-depth=1分析子目录占用,结合sort和head筛选最大项。 在Linux中统计目录大小,最常用的方法是使用 du 命令(disk usage)。它能显示文件和目录所占用的磁盘空间。 基本用法:查看…

    2026年9月9日
    200
  • LINUX怎么把命令的执行结果追加到文件末尾_LINUX输出重定向追加方法

    使用>>可将命令结果追加到文件末尾而不覆盖原有内容,如date >> log.txt;通过2>>可追加错误信息,如ls /nonexistent 2>> error.log;结合>> 文件名 2>&1可同时追加正常输出和错误输…

    2026年9月9日
    000
  • 环境搭建时mysql默认端口冲突如何解决

    修改MySQL端口或释放3306端口可解决冲突,通过配置文件设置新端口、终止占用进程或多实例分配不同端口实现。 MySQL 默认使用 3306 端口,当本地已运行其他 MySQL 实例或服务占用了该端口时,就会导致环境搭建失败。解决端口冲突的核心思路是修改 MySQL 配置或释放当前端口。以下是几种…

    2026年9月9日
    100
  • 谷歌浏览器如何恢复被隐藏的书签栏_谷歌浏览器书签栏显示恢复教程

    首先通过菜单或快捷键恢复书签栏显示,若无效则禁用扩展排查冲突,最后重置用户配置文件以修复异常。 如果您在使用谷歌浏览器时发现书签栏突然消失,无法看到收藏的网站链接,则可能是由于显示设置被更改、扩展程序冲突或用户配置文件异常所致。以下是恢复书签栏的详细操作步骤: 本文运行环境:MacBook Pro,…

    2026年9月9日
    000
  • 如何在Linux中管理磁盘配额?

    启用磁盘配额需先在/etc/fstab中添加usrquota和grpquota选项,然后重新挂载分区并创建aquota.user和aquota.group文件,接着运行quotacheck生成配额数据,使用edquota设置用户或组的软硬限制,最后通过quotaon启用配额,并用quota和repq…

    2026年9月9日
    200
  • Linux进程状态详解:运行、睡眠、僵尸进程等

    Linux进程状态包括运行(R)、睡眠(S/D)、停止(T/t)、僵尸(Z)等,反映进程执行情况;通过ps或top命令查看STAT列,可诊断CPU压力、I/O阻塞、资源泄漏等问题,助力系统性能调优。 在Linux系统中,进程是程序执行的基本单位。每个进程在其生命周期中会经历不同的状态,这些状态反映了…

    2026年9月9日
    000
  • Swoole如何实现代码热重载

    答案:Swoole通过外部机制实现代码热重载。利用inotify或fswatch监听文件变化,触发SIGUSR2信号重启Worker进程;结合Hyperf/watcher等工具自动检测并重启服务,提升开发效率。 Swoole本身运行在常驻内存模式下,PHP代码加载后不会重新读取文件,这导致修改代码后…

    2026年9月9日
    100
  • LINUX怎么合并多个小文件为一个_Linux小文件合并方法

    使用cat、find结合cat、awk、tar和dd命令可合并Linux小文件。cat用于文本合并,find筛选后合并,awk添加分隔符,tar打包保留结构,dd精确拼接二进制文件。 如果您需要将多个小文件整合为一个大文件以便于管理或传输,可以通过多种方式在Linux系统中实现这一操作。以下是几种常…

    2026年9月9日
    000
  • 如何在Linux命令行中管理软链接与硬链接?

    硬链接是多个文件名共享同一inode,数据块相同,不可跨文件系统或链接目录;软链接是特殊文件,存储目标路径,可跨文件系统和目录,原文件删除后失效。使用ln命令创建:ln源文件目标名建硬链接,ln-s源文件目标名建软链接。ls-l查看时软链接显示指向路径,stat可查inode验证硬链接一致性。删除用…

    2026年9月9日
    000
  • 如何在Linux中查看文件元数据?

    使用stat命令可查看文件的详细元数据,包括权限、所有者、大小及Access、Modify、Change时间戳;ls -l用于查看基本元数据,字段包含权限、硬链接数、所有者、组、大小、修改时间和文件名;需查看扩展属性时可用getfattr -d或getfacl命令。 在Linux中查看文件元数据,可…

    2026年9月9日
    000
  • Linux下C++命令行调试实战

    Linux下C++命令行调试实战Linux下C++命令行调试实战Linux下C++命令行调试实战Linux下C++命令行调试实战

    本文为该系列的第四篇文章,如果您尚未阅读前面的内容,可以通过以下链接进行查阅: Linux中使用g++工具编译C++代码及其常用操作指令 Linux下C++命令行编译示例 Linux下的GDB调试器常用指令 准备代码创建一个C++源代码文件 src/04_debug/sum.cpp,并添加以下代码:…

    2026年9月9日 用户投稿
    300
  • 如何在Linux中移动或重命名文件?

    mv命令用于重命名或移动文件,基本语法为mv [选项] 源文件 目标位置;使用-i可交互确认避免误覆盖,移动同时可重命名文件,操作简便但需谨慎防止数据丢失。 在Linux中移动或重命名文件主要使用 mv 命令。这个命令既可用于更改文件名,也可用于将文件从一个目录移到另一个目录。 基本语法 mv [选…

    2026年9月9日
    100
  • 解决Android文件保存中的ENOENT错误:正确使用外部存储路径

    本文旨在解决android应用在保存文件到外部存储时常见的enoent(no such file or directory)错误。核心问题在于错误地使用了非android文件系统路径,特别是将桌面操作系统路径应用于android设备。教程将详细解释android文件系统结构、推荐的存储api及其正确…

    2026年9月9日
    200
  • 如何使用Linux命令查看磁盘使用情况?

    使用df和du命令可查看Linux磁盘使用情况:df -h用于显示文件系统空间使用,du -sh用于统计目录占用,结合sort、find等命令可快速定位大文件或异常占用。 在Linux系统中,查看磁盘使用情况是日常运维和系统管理的基本操作。最常用的方法是使用df和du命令,它们分别用于查看文件系统的…

    2026年9月9日
    100
  • Linux文件系统stat命令详细使用

    stat命令可详细显示文件或文件系统状态,包括大小、权限、时间戳、inode编号、硬链接数等元数据,基本用法为stat filename;通过-c选项可自定义输出格式,如stat -c “%s %y”显示大小和修改时间;加-f选项可查看文件系统信息如类型、块使用情况和inod…

    2026年9月9日
    100
  • Linux文件系统中fdisk命令的详细教程

    fdisk是Linux中管理磁盘分区的命令行工具,支持MBR和GPT分区表;使用sudo fdisk -l查看磁盘信息,sudo fdisk /dev/sdb进入交互模式;常用命令包括m(帮助)、p(打印分区表)、n(新建分区)、d(删除)、t(修改类型)、w(保存退出)、q(不保存退出);创建分区…

    2026年9月9日
    100
  • 如何在Linux中配置自动挂载?

    配置Linux自动挂载主要有两种方式:1. 修改/etc/fstab实现开机自动挂载,适用于固定设备,需获取UUID、创建挂载点并正确填写fstab字段;2. 使用autofs实现按需挂载,适合移动设备或网络共享,通过配置auto.master和映射文件实现访问时自动挂载,并支持超时自动卸载。推荐固…

    2026年9月9日
    100
  • 如何通过硬件ID追溯设备兼容性问题?

    通过硬件ID可精准定位设备型号与驱动,解决兼容性问题。在Windows中通过设备管理器获取硬件ID,在Linux中使用lspci或lsusb命令,结合数据库查询或搜索引擎找到匹配驱动,有效应对“未知设备”难题,尤其适用于驱动缺失、版本不匹配或定制硬件场景。 通过硬件ID追溯设备兼容性问题,本质上是利…

    2026年9月9日
    100
  • idea 恢复默认

    重置IntelliJ IDEA需删除配置和缓存目录以恢复默认设置。首先关闭软件,删除Windows下C:Users用户名AppDataRoamingJetBrainsIntelliJIdea或macOS/Linux对应路径的IntelliJIdea文件夹;推荐同时清除Local或Caches下的缓存…

    2026年9月9日
    400

发表回复

登录后才能评论
关注微信