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

执行:

[email protected]:/ybg/python# ./main
Input an integer:
10
sum=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.o
gcc -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)

执行

[email protected]:/ybg/python# python test.py
so.sum(50) = 1275

原文地址:https://www.cnblogs.com/lasdaybg/p/9817470.html

时间: 2024-10-29 00:34:04

Linux环境下c程序的编译和执行的相关文章

Linux 环境下 gcc 链接库 编译、链接(概览) 以及 自动化工具Makefile的编写

个人博客首页(点击查看详情) -- https://blog.51cto.com/11495268 1.简介    程序编译一般需要经预处理.编译.汇编和链接,在实际应用中,有些公共代码需要反复使用,就把这些代码编译成为 "库" 文件,本文 主要 描述 Linux 平台下 库文件的 创建 和 链接 相关操作(既然都看 这么底层的内容了,相信 也有一定的基础,所以本文 对相关命令 也不会进行详细解释)    备注:    linux平台下,静态链接库是以 .a 的后缀文件,动态链接库是以

在linux环境下尝试使用gcc编译一个程序,并验证-E\-S\-c选项

首先,进入Linux平台: 2.双击Terminal,进入: 3.编入命令 vim test.c ,进入新建文件test.c中,并且自己编写一个简单的c语言程序: 4.分别输入命令: ESC   :  w   q   ! 这5个命令回到编译页面,如若想修改则可输入命令 vim test.c  进入,输入命令i或者A命令 5.输入命令gcc -S test.c  预处理 6.输入命令 gcc -c test.c     预编译处理完成 7.输入命令    ./test 8.程序运行截图:

Qt在Linux环境下应用程序字体模糊的解决方法(先改成使用默认字体,然后使用qtconfig配置)

这两天一直在用Qt实现一个跨平台的软件.软件之前在Windows上编写的,后来放到里Ubuntu 10.10下编译.程序运行时遇到一个很棘手的问题,界面文本非常模糊.后来在网上查阅了好几天的资料,经历了无数次实验,最终解决了这一问题.下面以一个Demo程序来重现这一问题. 本文中的编译平台为:Ubuntu 10.10 x86版, g++ 4.4.5, Qt 4.7.3自己编译的 首先看看我的Demo程序文本模糊时的截图: 一个软件界面的文本要是这样子,根本无法接受. 有人说要通过qtconfig

在linux环境下利用mmm命令编译android项目错误记录

此篇文章建立在之前的三篇文章的基础之上(本次内容主要参考老罗的<android源码情景分析一书>): 源码编译 内核编译 adb连接模拟器 ------------------------------------------------------------------------------------ 之后,在android源码环境中编写了一个简单的android程序HelloAndroid. 文件结构如下: ~/android/packages/experimental/HelloAn

linux环境下tesseract4.1的编译安装

由于公司新的产品需要深度集成tesseract,所以需要在linux下和windows下源码编译安装tesseract,tesseract当前最新稳定版本是4.1.0,所以就从这个版本入手,编译的过程中碰到了不少困难,踩到了不少坑,所以特意分享出来,避免各位朋友再走弯路~~. 1.查看centos版本#cat /etc/redhat-releaseCentOS release 6.5 (Final) 2.查看gcc和g++版本#gcc --version#g++ --versiongcc至少应需

【caffe】caffe在linux环境下的安装与编译

网上的caffe的安装教程繁杂而散乱,对初学者很不友好,尤其对该框架理解不深的童鞋.总的来说,caffe的安装不外乎几个固定的步骤,对每一步有了一定的理解,安装只是time-consuming的问题!关键是自己要理解每一步是做什么的,最起码要有思维惯性.对Ubuntu活Redhat等,都是大同小异. [一]安装相关依赖包 1.编译工具等,如gcc(对版本有要求),git.python-pip等: 2.编译依赖包,如cuda/cudnn/hdf5等,具体参考官网: ps:若有sudo权限,需要下载

cocos2d-x v3.0各个环境下创建项目以及编译、执行官方DEMO

摘自:https://github.com/cocos2d/cocos2d-x/ 怎样创建一个新项目 How to start a new game Download the code from cocos2d download site Run setup.py Run the cocos script Example: $ cd cocos2d-x $ ./setup.py $ source FILE_TO_SAVE_SYSTEM_VARIABLE $ cocos new MyGame -p

linux环境下(非UI操作)所有软件的安装与卸载总结

UI界面的软件管理 linux下的软件一般都是经过压缩的,主要的格式有这几种:rpm.tar.tar.gz.tgz等.所以首先拿到软件后第一件事就是解压缩. 在xwindow下以rpm格式的软件安装比较容易,只要在把鼠标移到文件上单击右键,在弹出的菜单里会有专门的三项(只有在右键单击rpm文件才会出现)show info,upgrade和install,这 三项的意思大家都很清楚了,我就不多说了. rpm格式说了,接着就是tar,tar.gz,tgz等,在xwindow下双击这些格式的文件就会自

在linux环境下编译运行OpenCV程序的两种方法

原来以为在Ubuntu下安装好了OpenCV之后,自己写个简单的程序应该很容易吧,但是呢,就是为了编译一个简单的显示图片的程序我都快被弄崩溃了. 在谷歌和上StackOverFlow查看相关问题解答之后,我下面就介绍Command Line和CMake两种方式. 首先我先粘上我测试的代码吧,文件名为Test.c 1 #include <highgui.h> 2 3 int main(int argc,char ** argv) { 4 5 IplImage* img = cvLoadImage