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. 关于react16.4——错误边界

    过去,组件内的 JavaScript 错误常常会破坏 React 内部状态,并导致它在下一次渲染时产生神秘的错误.这些错误总会在应用代码中较早的错误引发的,但 React 并没有提供一种方式能够在组件 ...

  2. 媒体查询漫谈——@media Queries

    通过不同的媒体类型和条件定义样式表规则.媒体查询让CSS可以更精确作用于不同的媒体类型和同一媒体的不同条件.媒体查询的大部分媒体特性都接受min和max用于表达”大于或等于”和”小与或等于”.如:wi ...

  3. ubuntu server 启用mysql日志

    1.要启动mysql日志,你就要找到mysql 核心的文件my.cnf  (路径:/etc/mysql) 在命令窗口输入:cd /etc/mysql 在命令窗口输入:ls 你就可以看到my.cnf文件 ...

  4. windows 系统分布式版本控制 git 使用学习

    1. 在 Windows 上安装 Git 在Windows上使用Git,可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),然后按默认选项安装即可. 安装完成后,在开始菜单里找到“Git ...

  5. 集成学习二: Boosting

    目录 集成学习二: Boosting 引言 Adaboost Adaboost 算法 前向分步算法 前向分步算法 Boosting Tree 回归树 提升回归树 Gradient Boosting 参 ...

  6. python中bottle模块的使用

    1.简介 2.示例 2.1一个简单的bottle接口 # -*- coding: utf-8 -*- from bottle import route, request, run import jso ...

  7. loj 10117 简单题(cqoi 2006)

    题目来源:CQOI 2006 有一个 n 个元素的数组,每个元素初始均为 0.有 m条指令,要么让其中一段连续序列数字反转——0变 1,1 变 0(操作 1),要么询问某个元素的值(操作 2). 例如 ...

  8. select * from dim.dim_area_no@to_dw

    应该是建的有database linksdim是用户名,dim_area_no是表名,to_dw 是建的database links的名,dim_area_no表属于dim用户创建database l ...

  9. Linux command automake

    Linux command automake [Purpose]        Learning linux command automake for generate Makefile.in for ...

  10. 获取音、视频时长(NAudio,Shell32,FFmpeg)

    参考网址:https://blog.csdn.net/u013810234/article/details/57471780 以下为本次测试用到的音.视频格式: audio :”.wav;.mp3;. ...