QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1570|回复: 5

可能是LINUX下编程最低级的问题 :)

[复制链接]
发表于 2003-10-23 14:42:23 | 显示全部楼层 |阅读模式
////////////////////////////////////////////////////////////////////////////////////////////
技术文章: GCC - 一切从这里开始
  贴出者为 llc
编程开发
GCC rules

你能想象使用封闭源代码的私有编译器编译自由软件吗?你怎么知道编译器在你的可执行文件中加入了什么?可能会加入各种后门和木马。Ken Thompson是一个著名的黑客,他编写了一个编译器,当编译器编译自己时,就在'login'程序中留下后门和永久的木马。请到 这里 阅读他对这个杰作的描述。幸运的是,我们有了gcc。当你进行 configure; make; make install 时, gcc在幕后做了很多繁重的工作。如何才能让gcc为我们工作呢?我们将开始编写一个纸牌游戏,不过我们只是为了演示编译器的功能,所以尽可能地精简了代码。我们将从头开始一步一步地做,以便理解编译过程,了解为了制作可执行文件需要做些什么,按什么顺序做。我们将看看如何编译C程序,以及如何使用编译选项让gcc按照我们的要求工作。步骤(以及所用工具)如下:预编译 (gcc -E), 编译 (gcc), 汇编 (as),和 连接 (ld)。

开始...

首先,我们应该知道如何调用编译器。实际上,这很简单。我们将从那个著名的第一个C程序开始。(各位老前辈,请原谅我)。

#include <stdio.h>

int main()

{
  printf("Hello World!
");
}

把这个文件保存为 game.c。 你可以在命令行下编译它:

gcc game.c

在默认情况下,C编译器将生成一个名为 a.out 的可执行文件。你可以键入如下命令运行它:

a.out
Hello World


///////////////////////////////////////////////////////////////////////////////////
问题:
1) 按上面的步骤做在命令行输入a.out,显示如下
[wdhong@localhost wdhong]$ a.out
bash: a.out: command not found
在相应的 目录下有a.out这个文件.
2) 加环境变量的时候在命令行EXPORT是不是重起后就不起作用呢,如果要作为默认设置应该怎样做
3) red hat 9 是不是自己就带有gcc and gdb在哪个位置?如果用所开发CPU所带的tools-chain应该改边些什么?
谢谢
发表于 2003-10-23 14:52:23 | 显示全部楼层
若当前目录不在$PATH中,而又要执行当前目录下的文件,应该在执行命令前加“./”。

如此命令应为 “./a.out”。
回复

使用道具 举报

 楼主| 发表于 2003-10-23 14:55:32 | 显示全部楼层
[quote:407a39c06b="journeyer"]若当前目录不在$PATH中,而又要执行当前目录下的文件,应该在执行命令前加“./”。

如此命令应为 “./a.out”。[/quote]

thanks alot!
还有2 and 3
回复

使用道具 举报

发表于 2003-10-23 22:23:17 | 显示全部楼层
2) check which shell u use. ls -a, add to u profile

3) no, it depends on whether u choose them when install.
type command gcc or. gdb  to see if u have them
if not, install from cd


for crosscompile toolchain. u had better download one, and install
回复

使用道具 举报

 楼主| 发表于 2003-10-23 22:27:37 | 显示全部楼层
thanks Dragonfly老大
回复

使用道具 举报

 楼主| 发表于 2003-10-24 11:04:24 | 显示全部楼层
Dragonfly老大还是没有解决问题啊
下面是安装TOOLS-CHAIN的说明文件
/////////////////////////////////////////////////////////////////////////////////////////////////
2.1 Arca Cross Compiler Arca-gcc

2.1.1 Install The Arca Cross Compiler Arca-gcc

The Arca compiler packages arca-tc-linux-date.tgz” is the full develop environment about

cross compiler running on PC Linux. They comprises the contents of the package:

• glibc libraries

• stdc++ libraries

• c/c++ compiler

• assembler

• linker

• simulator

• debugger.

2.1.1.1 Installation

Install the Arca compiler has two steps:

• Unpack the arca-tc-linux-date.tgz”

$ tar xvfz arca-tc-linux-dates.tgz

• Set the libraries path:

$ cd arca

$ ./bin-set

$ cd -

Then the Arca cross compiler environment is installed into the arca” directory.

2.1.1.2 Directory Arrangment

After installation of the tool chain, you can find the developing environment in the sub-directory

on the arca” directory.

Compiler Tool-chain Setup

• The executed program is installed into the directory arca/bin”, the main programs are:

 C compiler: arca/bin/arca-gcc

 C++ compiler: arca/bin/arca-c++ or arca/bin/arca-g++

 Assemble: arca/bin/arca-as

 Linker: arca/bin/arca-ld

 Simulator: arca/bin/arca-run

 Debugger: arca/bin/arca-gdb

• The glibc include files is installed into arca/arca-linux/include”.

• The C++ include files is installed into arca/include/g++-v3”.

• The glibc libraries and stdc++ libraries is installed into arca/arca-linux/lib” (little endian) and

arca/arca-linux/lib/mb” (big endian).

2.1.2 Setup and Using arca-gcc

2.1.2.1 Setup arca-gcc

Before using the arca-gcc to compiler the program running on Arca, the user should do the

following setups (for example the compiler is installed into /ARCA/arca-cc/arca):

• Set the environment variable GCC_EXEC_PREFIX”

export GCC_EXEC_PREFIX=/ARCA/arca-cc/arca/lib/gcc-lib/

• Set the PATH

export PATH=$PATH:/ARCA/arca-cc/arca/bin

Then you can using the arca-gcc to compile your programs.
///////////////////////////////////////////////////////////////////////////////////
我按照上面做了,在命令行下运行arca-gcc还是说找不到命令
bash: arca-gcc: command not found
问题:
1)
Set the libraries path:

$ cd arca

$ ./bin-set

$ cd -
这个设置libraries path是不是重启就丢了?如果要以后会自动在这个目录找应该怎样做了?
2) 设置环境变量我在/etc目录下的 profile
里面加了两行
export GCC-EXEC-PREFIX=/home/wdhong/arca/lib/gcc-lib
export PATH=$PATH=/home/wdhong/arca/bin
profile如下,不知道对否
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

pathmunge () {
        if ! echo $PATH | /bin/egrep -q "(^|$1($|" ; then
           if [ "$2" = "after" ] ; then
              PATH=$PATH:$1
           else
              PATH=$1:$PATH
           fi
        fi
}

# Path manipulation
if [ `id -u` = 0 ]; then
        pathmunge /sbin
        pathmunge /usr/sbin
        pathmunge /usr/local/sbin
fi

pathmunge /usr/X11R6/bin after

unset pathmunge

# No core files by default
ulimit -S -c 0 > /dev/null 2>&1

USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"

HOSTNAME=`/bin/hostname`
HISTSIZE=1000

if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
    INPUTRC=/etc/inputrc
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
//////////******ADD****************//
export GCC-EXEC-PREFIX=/home/wdhong/arca/lib/gcc-lib
export PATH=$PATH=/home/wdhong/arca/bin
//////////*********END*************//
for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
            . $i
    fi
done

unset i


我的red hat 9安装的时候选了完全安装,本来就有GCC和GDB,我在命令行下可以用
gcc编译文件!
谢谢先
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-21 22:18 , Processed in 0.070420 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表