1 单个文件的编译和执行
创建main.c文件,内容如下:

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

编译:

gcc -o main main.o

执行:

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

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

#include <stdio.h>
#include <stdlib.h> int sum(int x){
int i, result=;
for(i=; i<=x; i++){
result+=i;
}
if(x > )
exit(-);
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 ;
};

编译

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)

执行

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

最新文章

  1. ASP.NET MVC 视图(三)
  2. 深入理解DOM节点类型第六篇——特性节点Attribute
  3. Web API系列(三)统一异常处理
  4. flume介绍与原理(一)
  5. 如何自定义wordpress登录界面的Logo
  6. css3属性之 box-sizing
  7. 几种C#程序读取MAC地址的方法
  8. python tornado+mongodb的使用
  9. jQuery扩展与noConflict的用法-小示例
  10. [转载]C宏定义的小结
  11. MySQL中explain的type类型
  12. go运算符
  13. ubuntu16 关于root的使用
  14. Large-Margin Softmax Loss for Convolutional Neural Networks
  15. IntelliJ IDEA 2016.2 配置Tomcat 运行Web项目
  16. win32gui.Findwindow(parm1,parm2)查找窗口的句柄方法
  17. Network-Emulator&#160;Network-Emulator-Toolkit网络模拟器使用详细介绍
  18. VirtualBox中slitaz系统不能联网
  19. ZooKeeper 了解
  20. 9 stark组件 增删改

热门文章

  1. TensorFlow博客翻译——用TensorFlow在云端进行机器学习
  2. ThinkPHP3.2.3学习笔记1---控制器
  3. java jdbc 与mysql连接的基本步骤
  4. Python添加自己的模块路径
  5. _bzoj1007 [HNOI2008]水平可见直线【单调栈】
  6. 【洛谷2304_LOJ2134】[NOI2015]小园丁与老司机(动态规划_网络流)
  7. zoj3699Dakar Rally
  8. SpringBoot_自定义配置属性
  9. 解决webstromm标签高亮问题
  10. mysql 5.7安装过程中,初始化的问题