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代码  

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(int argc, char **argv)
  4. {
  5. printf("Hello world!\n");
  6. exit(0);
  7. }

使用如下命令编译并测试这个代码:

引用

# gcc -o hello hello.c 
# ./hello 
Hello wordl!

在默认情况下产生的可执行程序名为a.out,但你通常可以通过gcc的“-o”选项来指定自己的可执行程序名称。

2. 编译多个源文件

源文件message.c包含一个简单的消息打印函数:

C代码  

  1. #include <stdio.h>
  2. void goodbye_world(void)
  3. {
  4. printf("Goodbye, world!\n");
  5. }

使用gcc的“-c”标记来编译支持库代码:

引用

# gcc -c message.c

这一过程的输出结果是一个名为message.o的文件,它包含适合连接到一个较大程序的已编译目标代码。

创建一个简单的示例程序,它包含一个调用goodbye_world的main函数

C代码  

  1. #include <stdlib.h>
  2. void goodbye_world(void):
  3. int main(int argc, char **argv)
  4. {
  5. goodbye_world();
  6. exit(0);
  7. }

使用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代码  

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #define MAX_INPUT 25
  5. int main(int agrc, char **argv)
  6. {
  7. char input[MAX_INPUT];
  8. double angle;
  9. printf("Give me an angle (in radians) ==>");
  10. if(!fgets(input, MAX_INPUT, stdin)){
  11. perror("an error occurred.\n");
  12. }
  13. angle = strtod(input, NULL);
  14. printf("sin(%e) = %e\n", angle, sin(angle));
  15. return 0;
  16. }

编译命令:

引用

# 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编程开发工具的更多相关文章

  1. Android开发人员必须掌握的10 个开发工具+应该深入学习的10个开源应用项目

    一.Android开发人员必须掌握的10 个开发工具 Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. ...

  2. Android 开发人员必须掌握的 10 个开发工具

    Android 开发人员必须掌握的 10 个开发工具 Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. ...

  3. Mac iOS Mac Watch 应用和游戏编程开发工具推荐

    今日分享「iOS / Mac / Watch 应用和游戏开发工具」推荐,这期专题主要为iOS开发者推荐一些优秀的设计和开发工具,这些工具包含移动原型的设计.程序的开发等,可以大大提高开发的效率!专题会 ...

  4. Android开发人员必备的10个开发工具

    工欲善其事,必先利其器,Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. 1.Eclipse ADT E ...

  5. Android开发人员必备的10 个开发工具

      工欲善其事,必先利其器,Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. 1.Eclipse ADT ...

  6. 10款无需编程的App DIY开发工具

    10款无需编程的App DIY开发工具 你有一个很棒的创意但不会编程怎么办?外包.合伙开发还是从零学编程?这里提供另外一种方式--使用无需编程的App  DIY开发工具.DIY开发工具不仅节省了开发时 ...

  7. 技术大众化--10款无需编程的App DIY开发工具

    你有一个很棒的创意但不会编程怎么办?外包.合伙开发还是从零学编程?这里提供另外一种方式--使用无需编程的App DIY开发工具.DIY开发工具不仅节省了开发时间和资金,更为那些创意无限热爱应用的人提供 ...

  8. 10款html5开发工具,实用+好用

    利用HTML5工具不仅可以帮助设计师和开发者创建更具吸引力的网站,还能增加网站的可用性和可访问性.本文收集了10款HTML5开发工具让你在网页中搭建特效.动画.视频.音频等诸多功能,为你节省更多开发时 ...

  9. 简化工作流程,10款必备的HTML5开发工具

    利用HTML5工具不仅可以帮助设计师和开发者创建更具吸引力的网站,还能增加网站的可用性和可访问性.本文收集了10款HTML5开发工具让你在网页中搭建特效.动画.视频.音频等诸多功能,为你节省更多开发时 ...

随机推荐

  1. logging addHandler(console)

    import logging # set up logging to file - see previous section for more details logging.basicConfig( ...

  2. hdu-4738-tarjin/割边

    http://acm.hdu.edu.cn/showproblem.php?pid=4738 求得是边权最小的割边,和求割点类似用tarjin,但要注意的是不能走从父亲过来的那一条边,在割点里那样理解 ...

  3. PAT 1009 Product of Polynomials

    1009 Product of Polynomials (25 分)   This time, you are supposed to find A×B where A and B are two p ...

  4. Spring注解之 @EnableScheduling计划任务注解

    要实现计划任务,首先通过在配置类注解@EnableScheduling来开启对计划任务的支持, 然后在要执行计划任务的方法上注解@Scheduled,声明这是一个计划任务 示例:计划任务执行类 在这个 ...

  5. [转]10+倍性能提升全过程--优酷账号绑定淘宝账号的TPS从500到5400的优化历程

    摘要: # 10+倍性能提升全过程--优酷账号绑定淘宝账号的TPS从500到5400的优化历程 ## 背景说明 > 2016年的双11在淘宝上买买买的时候,天猫和优酷土豆一起做了联合促销,在天猫 ...

  6. python QMainWindow QWidget

    from PyQt5 import QtWidgetsfrom untitled import Ui_MainWindowfrom PyQt5.QtWidgets import QFileDialog ...

  7. zabbix3.4.7主动模式监控日志(多关键字)

    日志监控原理 1.Zabbix Server和Zabbix Agent会追踪日志文件的大小和最后修改时间,并且分别记录在字节计数器和最新的时间计数器中. 2.Agent会从上次读取日志的地方开始读取日 ...

  8. Python自然语言处理---TF-IDF模型

    一. 信息检索技术简述 信息检索技术是当前比较热门的一项技术,我们通常意义上的论文检索,搜索引擎都属于信息检索的范畴.信息检索的问题可以抽象为:在文档集合D上,对于关键词w[1]…w[k]组成的查询串 ...

  9. javascript 字符串函数

    字符串的截取 str.substring(0,index) 字符串转换为日期 <script> var s = "2017-04-10"; var d = s.repl ...

  10. 分布式链路追踪(Sleuth、Zipkin)

    技术背景 在微服务架构中,随着业务发展,系统拆分导致系统调用链路愈发复杂,一个看似简单的前端请求可能最终需要调用很多次后端服务才能完成,那么当整个请求出现问题时,我们很难得知到底是哪个服务出了问题导致 ...