linux下练习 gcc 静态库/动态库 编译示例

//iotool.c

#include <stdio.h>
int inputInt(const char *info)
{
	int r;
	printf("%s:",info);
	scanf("%d",&r);
	return r;
}

graphic.c

#include <stdio.h>
void diamond(int r)
{
	int x,y;
	for(y=0;y<=2*r;y++)
	{
		for(x=0;x<=2*r;x++)
		{
			if(y==x+r  || y==x-r
			|| y==-x+r || y==-x+3*r)
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}
		}
		printf("\n");
	}
}

//callgra.c

#include<stdio.h>
main()
{
	int r=inputInt("半径");
	diamond(r);
}

编译和运行:

 

 

 

 

附:

ar -r libdemo1.a l1.o l2.o  //标准命名:lib+名称+.a
gcc main.c -l demo1 -L .    //编译使用:gcc c文件 -l 名称 -L 路径

 

动态库:

 

 

 

时间: 2024-09-21 10:23:37

linux下练习 gcc 静态库/动态库 编译示例的相关文章

linux下cp,mv进行动态库覆盖问题分析

问题的起因在来源于周会上老板提出的一个问题,cp新的so文件替换老的so,会导致程序core掉.这个问题引起了大家的热烈讨论,其中提及了的名词有inode,dentry,buserror等,比较混乱,由于功力浅薄,当时也没有十分清楚引起core掉的原因.于是乎趁着10.1的休息时间,闲里偷忙,理一理当时的问题,有不对之处,还请大家多多指出. 文章主要分为下面几个部分 part1.inode,dentry名词介绍 part2.cp,mv操作对inode的影响 part3.cp,mv覆盖动态库的区别

Linux 静态库&amp;动态库调用

1.什么是库在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和linux的本质不同,因此二者库的二进制是不兼容的.本文仅限于介绍linux下的库.2.库的种类linux下的库有两种:静态库和共享库(动态库).二者的不同点在于代码被载入的时刻不同.静态库的代码在编译过程中已经被载入可执行程序,因此体积较大.共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小.3.库存在

静态库动态库链接分析

本文为验证后的结果,准确性较高,适合任何人阅读 静态库和动态库链接分析 1.文件组成结构 静态库:lib   头文件 动态库:lib   dll  头文件 从组成上看,动态库和静态库的差异在于动态库多了一份dll文件,导致动态库可以独立存在, 2.链接方式 静态库:只能静态链接 动态库:动态链接和静态链接 3.运行效果 静态库:相当于直接把代码段写入到exe或dll文件中 动态库:相当于与exe或dll形成了一种关系,exe或dll可以到动态库中去查找所需要的函数   4.差别: 静态库:不需要

c语言-Linux下使用gcc编译c11程序是不是过于麻烦了?

问题描述 Linux下使用gcc编译c11程序是不是过于麻烦了? 每次都要输入-std=c11 是不是过于麻烦了?怎么让它默认为-std=c11? 解决方案 因为它默认是c89等标准,所以需要指定 你可以写一个makefile ,这样每次只用make来编译

linux下的webserver BOA及CGIC库的使用指南(转帖)

我把网页挂载到nfs 下面的文件中(需要新建一个文件www ),不过这样很方便! 安装过程 ========================================================== 1 )在www.boa.org 下载boa-0.94.13.tar.gz 并解压 # tar -zxvf boa-0.94.13.tar.gz 2 )在src 目录下运行./configure 3 )生成Makefile 文件,修改 CC = arm-linux-gcc CPP = arm

linux下qt的静态编译-QFontDataBase: Cannot find fonts directory

问题描述 QFontDataBase: Cannot find fonts directory 大家好,我最近在学qt, 在搭建linux下静态编译环境时出现了一些问题,就是编译好的可执行程序在移植到其他linux环境下执行时会出现QFontDataBase: Cannot find fonts directory,我也找了一些资料,但是答案就是复制一份fonts到其他linux环境下可以正常执行,但是这太麻烦了,有悖静态编译的原理.无意间看到一篇帖子说是在配置的时候加入font参数,但不知道具

linux下mysql5.5.15源码包编译安装

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://navyaijm.blog.51cto.com/4647068/809416 mysql果然是不愧是目前在linux下最火的数据库软件,自从mysql5.5.8之后,mysql的源码包编译安装都要用到cmake来进行编译了,编译的过程没有本质的区别,但是要直观很多.         1.源码包准备          (1)mysql-5.5.15.tar.gz mysqlmysq

CentOS Linux 下配置Apache2+PHP5+MySQL5+GD库的方法_Linux

先安装MYSQL 服务器 解压MySQL,把所有文件复制到/usr/local/mysql [root@Bleach usr]# groupadd mysql [root@Bleach usr]# useradd -g mysql mysql [root@Bleach mysql]# cd /usr/local/mysql [root@Bleach mysql]# scrīpts/mysql_install_db --user=mysql  [root@Bleach mysql]# chown 

Linux下Shell脚本完成SVN版本库的建立

每次建立一个新的SVN版本库总感觉很繁琐,所以写了段脚本来把这个过程自动化,详细代码如下:  代码如下 复制代码 #!/bin/bash # by www.111cn.net echo -n "Enter SVN name :" read svn_name /usr/bin/svnadmin create /svnroot/$svn_name if [ $? -eq 0 ]; then         # svnserve.conf     sed -i 's/# anon-acces