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. Web测试——功能测试

    由于本人工作接触Web测试,所以我从网上找的资料,学习了解web测试哪些内容,然后自己整理汇总的随笔,如文章中有不足的地方,请大家多多指教:或者文章内容与他人相似,望见谅. 功能测试: 1.链接测试: ...

  2. express中app.get和app.use的解析

    app.get(path,callback)中的callback只能是函数 app.use(path,callback)中的callback既可以是router对象又可以是函数 当其是router对象 ...

  3. hearbeat of RAC

    Heartbeat is a pooling mechanism in clustered platforms to verify if the other server participating ...

  4. WinForm之窗体应用程序

    WinForm之窗体应用程序 基本简单数据库操作(增删改查) using System; using System.Collections.Generic; using System.Windows. ...

  5. 如何将两个字段合成一个字段显示(oracle和sqlserver的区别)

    oracle中,如何将两个字段数据合并成一个字段显示,接下来看一下在sql server和pl/sql的区别 sql server中如何合并(用Cast()函数) --1.创建模拟的数据表--- cr ...

  6. linux下vmstat命令详解

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控. 它能够对系统的整体情况进行统计,无法对某个进程进行深入分析 ...

  7. linux因勿删或误操作导致登录界面异常,命令无法使用,显示/bin/bash:No such file or directory

    一.故障现象 1.用secure CRT连接服务器时显示: /bin/bash:No such file or directory 翻译成中文是:没有此类文件或目录 2.直接登录服务器执行命令时显示: ...

  8. Cyclic Components CodeForces - 977E(DFS)

    Cyclic Components CodeForces - 977E You are given an undirected graph consisting of nn vertices and  ...

  9. 分析图第二讲导出图片和后期PS5.12

    导出渲染的白模加上EXTRATEX.再导出一张“消隐”样式的模型图片.就是线稿图. 再导出一张着色显示图,并去掉边线.,用于后期PS选择范围用. 把这几张图全都导入ps. 渲染图的阴影面是灰色的,示例 ...

  10. Win10系列:JavaScript综合实例1

    上面几个小节讲解了使用HTML5和JavaScript语言开发Windows 应用商店应用时会用到的一些技术,本小节将前面介绍的知识融合在一起创建一个菜谱应用程序,帮助读者更进一步地理解和掌握这些知识 ...