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开发工具让你在网页中搭建特效.动画.视频.音频等诸多功能,为你节省更多开发时 ... 
随机推荐
- laravel的重定向
			Route::get("redirect1", function () { // redirct的三种写法 // return redirect()->route(" ... 
- [Fiddler] ReadResponse() failed: The server did not return a complete response for this request. Server returned 0 bytes.
			待解决 [Fiddler] ReadResponse() failed: The server did not return a complete response for this request. ... 
- Session重点整理
			首先明确几个概念 (1)JSessionID:通过tomcat运行的Java项目,为新用户生成的随机字符串.(应该是tomcat设置的,我没试过别的服务器,如有错误请指正) (2)Session请求( ... 
- echarts的基本使用
			echarts的基本使用 官网:http://echarts.baidu.com/index.html ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移 ... 
- python爬虫---BeautifulSoup的用法
			BeautifulSoup是一个灵活的网页解析库,不需要编写正则表达式即可提取有效信息. 推荐使用lxml作为解析器,因为效率更高. 在Python2.7.3之前的版本和Python3中3.2.2之前 ... 
- js中用来操作数组的相关的方法
			push向数组的的末尾添加新的内容 unshift向数组的开头增加新的内容 slice(n,m)从索引n开始(包含n),找到索引m处(不包含m),然后把找到的内容作为一个新的数组返回,原有的数组不改变 ... 
- 套接字编程,建立连接connect,绑定套接字bind
			1.建立连接 int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 参数sockfd是由函数socket创建 ... 
- 使用JdbcTemplate操作数据库(二十九)
			使用JdbcTemplate操作数据库 Spring的JdbcTemplate是自动配置的,你可以直接使用@Autowired来注入到你自己的bean中来使用. 举例:我们在创建User表,包含属性n ... 
- 使用python将excel数据导入数据库
			使用python将excel数据导入数据库 因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接 ... 
- SpringBoot的Profile文件
			1.多Profile文件我们在主配置文件编写的时候,文件名可以是application-{profile}.properties/yml默认使用application.properties的配置 2. ... 
