Fedora 10编程开发工具
1请问Fedora 10编程开发工具有什么
编辑器就用vim,编译用gcc,当然个人爱好随意
IDE的话推荐eclipse,如果做C/C++的,用codeblocks也是个不错的选择
输入gcc -v 是否返回版本,有就装了,没就没装
gcc编译器:gcc –v查看是否安装有gcc,经查看是4.3.2
2.#sudo yum install gcc 下载安装
2.1
vi编辑器下编写,修改,保存zwj.c
#include<stdio.h>
Int main(void)
{
Printf(“hello,world\n”);
Exit(0);
}
Gcc编译zwj.c:
gcc
zwj.c gcc –o zwj zwj.c //编译后命名zwj
输出结果:
./a.out ./zwj
2.2 编译源文件
1. 编译单个源文件
为了进行测试,你可以创建“Hello World”程序:
C代码
- #include <stdio.h>
- #include <stdlib.h>
- int main(int argc, char **argv)
- {
- printf("Hello world!\n");
- exit(0);
- }
使用如下命令编译并测试这个代码:
引用
# gcc -o hello hello.c
# ./hello
Hello wordl!
在默认情况下产生的可执行程序名为a.out,但你通常可以通过gcc的“-o”选项来指定自己的可执行程序名称。
2. 编译多个源文件
源文件message.c包含一个简单的消息打印函数:
C代码
- #include <stdio.h>
- void goodbye_world(void)
- {
- printf("Goodbye, world!\n");
- }
使用gcc的“-c”标记来编译支持库代码:
引用
# gcc -c message.c
这一过程的输出结果是一个名为message.o的文件,它包含适合连接到一个较大程序的已编译目标代码。
创建一个简单的示例程序,它包含一个调用goodbye_world的main函数
C代码
- #include <stdlib.h>
- void goodbye_world(void):
- int main(int argc, char **argv)
- {
- goodbye_world();
- exit(0);
- }
使用GCC编译这个程序:
引用
# gcc -c main.c
现在有了两个目标文件:message.o和main.o。它们包含能够被Linux执行的目标代码。要从这个目标代码创建Linux可执行程序,需要再一次调用GCC来执行连接阶段的工作:
引用
# gcc -o goodbye message.o main.o
运行编译结果:
引用
# ./goodbye
Goodbye, world!
前面这些单独的步骤也可以简化为一个命令,这是因为GCC对如何将多个源文件编译为一个可执行程序有内置的规则。
引用
# gcc -o goodbye message.c main.c
# ./goodbye
Goodbye, world!
3. 使用外部函数库
GCC常常与包含标准例程的外部软件库结合使用,几乎每一个Linux应用程序都依赖于由GNU C函数库GLIBC。
应用外部函数库的例子:
C代码
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #define MAX_INPUT 25
- int main(int agrc, char **argv)
- {
- char input[MAX_INPUT];
- double angle;
- printf("Give me an angle (in radians) ==>");
- if(!fgets(input, MAX_INPUT, stdin)){
- perror("an error occurred.\n");
- }
- angle = strtod(input, NULL);
- printf("sin(%e) = %e\n", angle, sin(angle));
- return 0;
- }
编译命令:
引用
# gcc -o trig -lm trig.c
GCC的"-lm"选项,它告诉GCC查看系统提供的数学库(libm)。因为Linux和UNIX的系统函数库通常以"lib"为前缀,所以我们假设它存在。真正的函数库位置随系统的不同而不同,但它一般会位于目录/lib或/usr/lib中,在这些目录中还有数以百计的其他必需的系统函数库。
4. 共享函数库与静态函数库
Linux系统上的函数库分为两种不同的类型:共享的和静态的
静态函数库:每次当应用程序和静态连接的函数库一起编译时,任何引用的库函数中的代码都会被直接包含进最终的二进制程序。
共享函数库:包含每个库函数的单一全局版本,它在所有应用程序之间共享。这一过程背后所涉及的机制相当复杂,但主要依靠的是现代计算机的虚拟内存能力,它允许包含库函数的物理内存安全地在多个独立用户程序之间共享。
使用共享函数库不仅减少了文件的容量和Linux应用程序在内存中覆盖的区域,而且它还提高了系统的安全性。一个被许多不同程序同时调用的共享函数库很可能会驻留在内存中,以在需要使用它时被立即使用,而不是位于磁盘的交换分区中。这有助于进一步减少一些大型Linux应用程序的装载时间。
将上面的message.c作为共享库函数使用的例子:
引用
# gcc -fPIC -c message.c
“PIC”命令行标记告诉GCC产生的代码不要包含对函数和变量具体内存位置的引用,这是因为现在还无法知道使用该消息代码的应用程序会将它连接到哪一段内存地址空间。这样编译输出的文件message.o可以被用于建立共享函数库,我们只需使用gcc的“-shared”标记即可:
引用
# gcc -shared -o libmessage.so message.o
将上面的mian.c使用共享库函数ligmessage.so编译:
引用
# gcc -o goodbye -lmessage -L. message.o
“-lmessage”标记来告诉GCC在连接阶段引用共享函数库libmessage.so。“-L.”标记告诉GCC函数库可能位于当前目录中,否则GNU的连接器会查找标准系统函数库目录,在本例的情况下,就找不到可用的函数库了。
此时运行编译好的goodbye会提示找不到共享函数库:
引用
#./goodbye
./goodbye: error while loading shared libraries: libmessage.so: cannot open
shared object file: No such file or directory
可以使用命令ldd来发现一个特定应用程序需要使用的函数库。ldd搜索标准系统函数库路径并显示一个特定程序使用的函数库版本。
引用
#ldd goodbye
linux-gate.so.1 =>
(0x00493000)
libmessage.so => not found
libc.so.6 => /lib/libc.so.6 (0x0097c000)
/lib/ld-linux.so.2 (0x0095a000)
库文件libmessage.so不能在任何一个标准搜索路径中找到,而且系统提供的配置文件/etc/ld.so.conf也没有包含一个额外的条目来指定包含该库文件的目录。
需要设置一个环境变量LD_LIBRARY_PATH来制定额外的共享函数库搜索路径,
引用
# export LD_LIBRARY_PATH=`pwd`
# ldd goodbye
linux-gate.so.1 =>
(0x002ce000)
libmessage.so =>
/tmp/cpro/libmessage.so (0x00b0f000)
libc.so.6 => /lib/libc.so.6 (0x0097c000)
/lib/ld-linux.so.2 (0x0095a000)
运行程序
引用
# ./goodbye
Goodbye, world!
3. Fedora Linux shell 脚本编程
编写一个shell脚本,显示当天日期,查找给定的某用户是否是系统用户,如果该用户在系统中工作,则发一个问候给他。
-----------f28.sh---------------
#!/bin/bash
#编写一个shell脚本,显示当天日期,查找给定的某用户是否是系统用户,如果该用户在系统中工作,则发一个问候给他
#最少需要1个参数 参数1是发给那个用户, 可选参数2是发送什么问候语
#bash f28.sh user "NI HAO MA"
date
[ -z $1 ] && exit 1
nihao=${2:-"NiHao"}
#echo $nihao
who | awk -v name="$1" -v tmp="$nihao"
'$1~name{system("echo -n "tmp" >/dev/"$2)}'
2>/dev/null
-------------------------
思路:
日期---date
系统用户可以who命令查看当前登录的用户。
发问候可以用write命令。
以下为脚本:
#! /bin/sh
date
echo "输入你要查找的用户"
read USERNAME
who | grep $USERNAME
STATUS=`echo $?`
if [ $STATUS -eq 0 ]
then
echo -n $USERNAME
echo " now is online"
echo -n "输入您要发送的信息"
echo ", 回车后以 ctrl + D 结束"
write $USERNAME
else
echo -n $USERNAME
echo " 不存在。"
fi
Fedora 10编程开发工具的更多相关文章
- Android开发人员必须掌握的10 个开发工具+应该深入学习的10个开源应用项目
一.Android开发人员必须掌握的10 个开发工具 Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. ...
- Android 开发人员必须掌握的 10 个开发工具
Android 开发人员必须掌握的 10 个开发工具 Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. ...
- Mac iOS Mac Watch 应用和游戏编程开发工具推荐
今日分享「iOS / Mac / Watch 应用和游戏开发工具」推荐,这期专题主要为iOS开发者推荐一些优秀的设计和开发工具,这些工具包含移动原型的设计.程序的开发等,可以大大提高开发的效率!专题会 ...
- Android开发人员必备的10个开发工具
工欲善其事,必先利其器,Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. 1.Eclipse ADT E ...
- Android开发人员必备的10 个开发工具
工欲善其事,必先利其器,Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. 1.Eclipse ADT ...
- 10款无需编程的App DIY开发工具
10款无需编程的App DIY开发工具 你有一个很棒的创意但不会编程怎么办?外包.合伙开发还是从零学编程?这里提供另外一种方式--使用无需编程的App DIY开发工具.DIY开发工具不仅节省了开发时 ...
- 技术大众化--10款无需编程的App DIY开发工具
你有一个很棒的创意但不会编程怎么办?外包.合伙开发还是从零学编程?这里提供另外一种方式--使用无需编程的App DIY开发工具.DIY开发工具不仅节省了开发时间和资金,更为那些创意无限热爱应用的人提供 ...
- 10款html5开发工具,实用+好用
利用HTML5工具不仅可以帮助设计师和开发者创建更具吸引力的网站,还能增加网站的可用性和可访问性.本文收集了10款HTML5开发工具让你在网页中搭建特效.动画.视频.音频等诸多功能,为你节省更多开发时 ...
- 简化工作流程,10款必备的HTML5开发工具
利用HTML5工具不仅可以帮助设计师和开发者创建更具吸引力的网站,还能增加网站的可用性和可访问性.本文收集了10款HTML5开发工具让你在网页中搭建特效.动画.视频.音频等诸多功能,为你节省更多开发时 ...
随机推荐
- 导出函数__declspec(dllexport)
一般而言,动态链接库中定义有两种函数:导出函数(export function)和内部函数(internal function). 导出函数可以被其它模块调用,内部函数在定义它们的DLL程序内部使用. ...
- 1.两数之和(Two Sum) C++
暴力法可解决,速度很慢. 解决办法:哈希表 知识点: map的构造 遍历map使用迭代器,判断条件 插入 pair<int,int> 寻找key是否存在 class Solution { ...
- [洛谷 P2709] 小B的询问
P2709 小B的询问 题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数 ...
- Hive QL的实例
1.创建电影评分表 create table film_table ( userid int, movieid int, rating int, unixtime string ) row forma ...
- sessionStorage在项目中的应用
1. 本地存储 Cookie(局限性):用户可以禁用cookie,最多只能存储4kb,cookie有过期时间的(一般我们设置的时间最长1个月,用户使用杀毒软件也可以清除我们的cookie)LocalS ...
- QString 的用法
C++语言提供了两种字符串的实现:C风格的字符串,以'\0‘结尾;std::string,即标准模版库中的类.Qt则提供了自己的字符串实现:QString,QString不用担心内存分配以及关于'\0 ...
- PHP json_encode重要的秘密
php格式化json的函数 json_encode($value,$options) 其中有2个比较常用到的参数 JSON_UNESCAPED_UNICODE(中文不转为unicode ,对应的数字 ...
- spring boot整合shiro后,部分注解(Cache缓存、Transaction事务等)失效的问题
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/elonpage/article/details/78965176 前言 整合有缓存.事务的sprin ...
- python 小白学习(1)
自定义错误类型 class XxxError(Exception): def __init__(self , message): self = Exception("xxxxx") ...
- learning ddr mode register MR3