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. ACM基础(一)

    比较大的数组应尽量声明在main函数外,否则程序可能无法运行. C语言的数组并不是“一等公民”,而是“受歧视”的.例如,数组不能够进行赋值操作: 在程序3-1中,如果声明的是“int a[maxn], ...

  2. java面试之谈

    半个多月的找工作时间,不是在去面试路上,就是在面试中,经历了大概有近10家的面试,虽然很多家都是一回了无音讯,对自己收获还是有的,至少让自己认识到了自身基础不牢固和技术知识面的狭隘.之前从事的工作主要 ...

  3. 12. Integer to Roman C++

    直接将各个数位上每个数所代表的罗马数字表示成字符串数组,然后提取出num的各位数,将对应的string相加 class Solution { public: string intToRoman(int ...

  4. docker容器扫盲

    Centos 6.5 安装和使用docker 基于本人一贯的习惯,关于“某某某是什么”这样的问题,请百度吧,会有更专业的人士,会比我说的更详细更深,这里我只给出本人亲历的安装和使用过程. 1.安装 先 ...

  5. Oracle12c中配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)

    Oracle12c中的多宿主选项允许一个容器数据库(CDB)容纳多个独立的可插拔数据库(PDB).本文将展示如何配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB).1. 配置CDB中的实例 ...

  6. Python学习之路【第三篇】--集合

    语法结构: set1.issubset(set2)判断集合set1是否为set2的子集,返回布尔值. ? 1 2 3 4 5 6 s1 = {'Java', 'PHP', 'Python', 'C++ ...

  7. js问题 项目问题

    项目问题1. js 中字符串替换函数var a = 'fajlfjal'a.replace(/b/,'a') // 不能直接改变a 而是返回替换后的值 2. vue 属性绑定中 class style ...

  8. React中禁止chrome填充密码表单

    当 input 的 type="password" 时,chrome浏览器会以 type="password" 为标识记住输入的用户名和密码, 如果chrome ...

  9. 阿里云服务器上安装mysql的详细步骤

    阿里云安装mysql (1)下载mysql安装包,去mysql官网下载对应的包 mysql数据库官方下载网址:   https://downloads.mysql.com/archives/commu ...

  10. C++ Templates 关于程序库的概念和通用工具

    using namespace std所谓的命名空间,就是一种将程序库名称封装起来的方法,它就像在程序库中竖立了一道围墙 标准程序库中有一部分,比如string classes,支持具体的错误处理,它 ...