IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
はじめに 久しぶりに Aho氏, Sethi氏, Ullman氏の書いた Compilers(レッド・ドラゴン・ブック)という書籍を目にしたので、昔、コンパイラを作った時の事を思い出しながらコンパイラについてまとめてみました。 Translator (翻訳) Translatorとは、一つのプログラミング言語(Source Language: 原始言語)で書かれたプログラムを入力として取り、別の言語(Object Language or Target Language: 目的言語)のプログラムとしてつくり出すプログラムです。 原始言語が FORTRAN, C, Pascal などの高水準言語で、目的言語がアセンブリ言語や機械語といったような低水準言語である時、そのような Translator をコンパイラ(Compiler) と呼びます。また、原始言語がアセンブリ言語で目的言語が機械語であ
back GNU gcc を使う際に知っていると便利なオプションを挙げておきます。 注意: これが全部ではありません。gcc には、ほかにも プロセッサ依存の細かいオプションが山のようにありますが、それらは ふつうあまり利用しないので省略しました。 一般的なオプション -c, -o, -I, -g, -O, -L, -l 省略。それくらい知ってること。ちなみに -L と -l は ld へのオプションであり、順番が重要である。 -pipe 各ステージ間で情報のやりとりをするのに temporary file を使わず、 pipe を使うようにする。このオプションが Makefile などに 含まれているときは、たいてい除いたほうがよい。なぜなら、 多くのシステムでは、アセンブラ側がパイプに対応してないから。 言語仕様に関するオプション -ansi 厳格な ANSI 仕様でコンパイルする。こ
概要 あるサーバ上でC++11の機能をフルに使いたかったがGCCが古かったのでGCC 4.8.2を新たにインストールした.管理者権限が無いのでソースからコンパイルして$HOME/localにインストールした. 環境 OS Linux x86_64 元のGCC 4.3.2 手順 # Download GCC 4.8.2 wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.2/gcc-4.8.2.tar.bz2 tar xjf gcc-4.8.2.tar.bz2 cd gcc-4.8.2 # Download GMP 5.1.3 wget https://ftp.gnu.org/gnu/gmp/gmp-5.1.3.tar.bz2 tar xjf gmp-5.1.3.tar.bz2 mv gmp-5.1.3 gmp #
Prerequisites for GCC GCC requires that various tools and packages be available for use in the build procedure. Modifying GCC sources requires additional tools described below. Tools/packages necessary for building GCC ISO C++11 compiler Necessary to bootstrap GCC. GCC 4.8.3 or newer has sufficient support for used C++11 features. Versions of GCC prior to 11 also allow bootstrapping with an ISO C+
概要 † 必要なもの † binutils gcc glibc カーネルヘッダ gmp,mpfr,mpc gcc, texinfo, m4, bison, gawk, rpm2cpio, gperf これらは事前にインストールしておくこと 作業手順概要 † binutilsを作成 glibcのヘッダだけ作成 glibc構築用gccの作成(C言語のみ) glibcの構築 glibc構築用gccの作成(C言語のみ)2回目 glibcの構築 フルgccの作成(すべての言語) glibcとgccはお互いに依存しているので,何回かに分けて無効オプションを外しながら構築を繰り返す必要がある 注意 † configure,makeを行う場合は,必ずソースがおいてあるディレクトリ以外で行うこと 文中では,ソース中にworkと言うディレクトリを掘り,そこからの相対パス(../configureなど)で実行し
crosstoolのログなんかを見ていてようやく理解してきた気がするけど、Linuxとかのパッケージをクロスコンパイルするときにconfigureの引数に--build、--host、--targetをどう指定したら良いのか、自分の中で整理がついてきたんじゃないかと思う。 たぶんこうだと思う。 引数 指定する内容 --build コンパイルPC --host makeして作ったプログラムの実行環境 --target クロス開発におけるターゲット環境 普通のコマンド類は「実行環境==ターゲット」だから $> ./configure --prefix=/hoge/sysroot --build=i386-pc-linux-gnu --host=x86_64-unknown-linux-gnu --target=x86_64-unknown-linux-gnu になると思う。*1 それで、クロス
Installing GCC: Configuration Like most GNU software, GCC must be configured before it can be built. This document describes the recommended configuration procedure for both native and cross targets. We use srcdir to refer to the toplevel source directory for GCC; we use objdir to refer to the toplevel build/object directory. If you obtained the sources by cloning the repository, srcdir must refer
GCC, the GNU Compiler Collection - GNU Project - Free Software Foundation (FSF) GCC 4.9がリリースされた。少なくとも、公式Webサイトのトップページからは、リリースされたことになっている。ただし、なぜかリンクをたどると GCC 4.9 Release Series — Changes, New Features, and Fixes - GNU Project - Free Software Foundation (FSF) GCC 4.9がリリースされた。興味深い変更点を上げると。 大昔の、もはや保守もテストもされていないようなプラットフォームのサポートがobsolete扱いになった。もし、活発な活動が行われない場合、次のリリースでは取り除かれるそうだ。特に、Solaris 9が挙げられている。 Cla
#include <assert.h> int getNumberOfDays(int month) { assert(1 <= month && month <= 12); /* うるう年は無視 */ static int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; return days[month - 1]; } ここでは、変数monthが1~12の間にあることを条件として指定しています。 プログラム実行時にassertに指定された条件を満足していないと、その時点で
仕事でCentOS 6.3な環境でテストプログラムを書いていて、乱数が必要になったので、ふと思いたってc++11のメルセンヌツイスタを使ってみようとしました。 ところが、標準でインストールされているg++は $ g++ --version g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3) Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULmmAR PURPOSE. このバージョンだとstd::mersenne_twister_engi
Linuxで共有ライブラリ(*.so)を作るようになったのでちょっと勉強してみた。今までは使うだけだったので、以下のようなことは知っていた。作るときはgccの-sharedオプションを使う。使うときはgccの"-lライブラリ名"でリンクするライブラリを指定する。リンク時のライブラリ探索パスは-Lオプションで指定する。実行時のライブラリ探索パスは/etc/ld.so.confに書いてあるディレクトリ。環境変数LD_LIBRARY_PATHでも指定可能。ライブラリを作るときは、.cから.oを作るときに-fPICをつけるといいらしい。新しくライブラリを入れたときはldconfigするといいらしい。逆に今まであまり知らなかったこと。ほとんどのライブラリはlibhoge.so, libhoge.so.1, libhoge.so.1.1のように3つくらいのファイルがあり、libhoge.soやlibh
C++11 が使えない?最新の GCC 使えばいいじゃない! sudo 権限がないからインストールできない?ビルドすればいいじゃない! はい。C++11 が使えないのはちょっと人権がないと思うので、そのためだけに GCC の最新版をビルドしてみました。まぁ、ほぼマニュアル通りに実行しただけなので、つまずいた所とかをメモ書き程度に。 uda@host:~$ uname -srmo Linux 2.6.32-5-amd64 x86_64 GNU/Linux uda@host:~$ cat /etc/debian_version 6.0.6 uda@host:~$ /usr/bin/gcc --version gcc (Debian 4.4.5-8) 4.4.5 Copyright (C) 2010 Free Software Foundation, Inc. This is free soft
This page has been incorporated into another. If you are not redirected automatically, click here. For questions related to the use of GCC, please consult these web pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org mailing list might help. Comments on these web pages and the development of GCC are welcome on our developer list at gcc@gcc.gnu.org. All of our lists have public archi
GCC の処理の流れ GCC を起動すると、前処理(preprocessing)、コンパイル、アセンブル、リンクの 4 段階で処理が行われます。全体的(overall)オプションを使うとこの一連の処理を途中の段階で停止することができます。次のプログラム hello.c を例にとってこの課程を覗いてみましょう。 #include <stdio.h> main() { printf("hello, world\n"); } まず hello.c の前処理だけしてその出力を覗いてみましょう。コマンドラインから、次のように入力します。 $ gcc -E hello.c | sed '/^[ ]*$/d' | less ヘッダファイル stdio.h が読みこまれて展開され、データ型の定義や、関数のプロトタイプ宣言がされているのが分かります。次に処理を全処理、コンパイルで止めてみます。コマンドライン
h8300-elf-なツールでlibm.a の関数がリンクできない (2002-07-08 22:51 by mugi #1280) はじめまして、 私はハードの設計と組み込みソフトの開発を仕事にしています。 諸般の事情で1年少し前からSH,H8シリーズのCPUをハード開発のベースにしています。 ソフト開発のベースとしてGNUProのツールとeCosに目をつけていたのですが、 最初の敷居が高くて、KMCやYellowSoftのツールでお茶をにごしていました。 ところが、2ヶ月ほど前にysatoさんの「eCos/RedBoot for H8/300H 移植日記」を見つけて、なんとかH8とSH環境でeCosを使えそうな希望が見えてきました。 このプロジェクトの発展に大いに期待しています。 今までWindows/DOSオンリーのベースでやってきたものですから四苦八苦してやっとSH-elfなツール
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く