問題タブ [gcc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
79618 参照

c++ - 静的変数の初期化順序

C++ は、コンパイル ユニット (.cpp ファイル) 内の変数が宣言順に初期化されることを保証します。コンパイル単位の数について、このルールはそれぞれ個別に機能します (クラス外の静的変数を意味します)。

ただし、変数の初期化の順序は、異なるコンパイル単位では定義されていません。

gcc と MSVC のこの順序に関する説明はどこで見ることができますか (これに依存するのは非常に悪い考えであることはわかっています。これは、新しい GCC メジャーと異なる OS に移行するときにレガシー コードで発生する可能性がある問題を理解するためのものです)。 ?

0 投票する
1 に答える
1635 参照

gcc - MIPS 用の gcc、3.4.4 または 4.3.2?

私たちが取り組んでいる組み込みシステムの気まぐれをサポートするために、gcc 3.3.2 (MIPS 用) に多くの変更を加えました。gcc 3.4 以降では、MIPS コード生成が大幅に改善されているように見えるので、変更を移植する予定です。問題は、どの gcc バージョンをターゲットにするべきかということです: 3.4.4 か、それとも 4.3.2 に直接移行しますか? 変更を移植するのはかなりの量の作業です。私はそれを 2 回行ってより良い結果を選びたくありません。

Linux-MIPS プロジェクトは引き続き gcc 3.4.4 を推奨しており、MIPS Technologies は gcc 3.4.4 に基づいて修正された SDE ツールチェーンを維持しています。私の組み込みシステムは Linux を実行していませんが、彼らの専門知識を尊重しています。

私が読んだことによると、MIPS バックエンドは 4.x のより高いレベルの最適化の恩恵を受けておらず、実際には 3.4.4 よりも遅いコードを生成します。誰でもこれを確認または否定できますか?

0 投票する
3 に答える
2021 参照

c - Windows XP での GCC コンパイラ エラー

GCC を使用して C プログラムをコンパイルしようとすると、まったく奇妙なエラーが発生します。私が使用しているバッチファイルは次のとおりです。

このコードを実行しようとしたときに表示されるエラー メッセージは次のとおりです。すべてのファイルは同じディレクトリにあります。はい、PATH 変数が正しく設定されています。

さて、興味深いのは gcc コマンドです。これは私が抱えている問題です。(他の問題はこれに連鎖しているようです。) core.c をコンパイルすると、GCC コマンドは正常に機能し、期待どおりに .o ファイルが生成されます。system.c または consoleio.c をコンパイルしようとすると、GCC が失敗しますが、非常に予期しない方法で、Windows がプログラムを実行できないように見えます。これはには意味がありません。これらのコマンドをウィンドウの外で自分で実行するなど、さまざまなことを試しました。core.c のどこかが特別で、何が違うのかわかりません。私は文字通りその行をコピーし、ファイル名を変更して、失敗している他の 2 行を作成しました。

つまり、要するに、助けてください。Windows XPでDJGPPとGCCを使用しており、最後にすべてを結び付けるPythonスクリプトを使用しています。(プロジェクトが単一のソース ファイルである場合、これはすべて機能しましたが、ファイルを個別のファイルに分割しようとすると、この奇妙なエラーが発生しました。)

ありがとう。

PS: はい、バッチ ファイル使用しています。ただし、可能であればメイクファイルに進む前に、このエラーを理解したいと思います。^_^

編集:問題はWindowsではなくDJGPPにありましたが、受け入れられた答えは確かに私たちの問題でした。(Windows にはコマンド制限がないようです。) 解決策は、DJGPP の代わりに MinGW でコンパイルすることでした。これにより、問題はすぐに修正されました。みんなありがとう!

0 投票する
5 に答える
116521 参照

gcc - gccエラー:間違ったELFクラス:ELFCLASS64

外部のコンパイル済みオブジェクトcoreset.oを使用してプログラムをコンパイルしようとしました。public01.cテストファイルを作成しました。関数はcomputation.cにあり、どちらもコンパイルされます。しかし、それを一緒にリンクすることに失敗しました。何が問題なのでしょう?

0 投票する
3 に答える
61198 参照

visual-studio - Visual Studioを使用したGCC?

Visual Studio 2008内からVC++の代わりにGCCを使用するのはどれほど難しいでしょうか?明らかに、一部のキーワードは一致せず、一部は構文が強調表示されない場合があります(新しい言語サービスを作成した場合を除く)。

これは「makefileプロジェクト」の目的ですか?

0 投票する
4 に答える
14002 参照

linux - RHEL4 への GCC 3.4.6 のインストール

コマンドラインで次のことを行います。

1) wget ftp://mirrors.kernel.org/gnu/gcc/gcc-3.4.6/gcc-3.4.6.tar.bz2

2) タール -jxf gcc-3.4.6.tar.bz2

3) CD gcc-3.4.6

4) CD libstdc++-v3

5) ./configure

そして、次のエラーが表示されます。

configure: エラー: ./../.. に install-sh または install.sh が見つかりません

実際には gcc-3.4.6 ディレクトリに「install-sh」ファイルがありますが、これは現在の 2 つではなく 1 つ上のディレクトリです。

configure スクリプトは、"./../.." ではなく "./.." で install-sh を探す必要があります ??

どうしたの??

0 投票する
4 に答える
468 参照

linux - GCC のアップグレード後に MySQL++ ライブラリが機能しない

mysql++ ライブラリを使用し、GCC 3.3.4 でコンパイルしていました。
その GCC バージョンにはいくつかのバグがあったため、GCC 3.4.6 にアップグレードしました。
GCC をアップグレードした後、mysql++ を再構築し、プログラムを再コンパイルしました。しかし、今ではセグメンテーション違反エラーが発生します。

次のメッセージが表示されます。

./mysqlTest: 共有オブジェクトのシンボル `_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE' のサイズが異なります。再リンクを検討してください。
セグメンテーション違反

アプリが再び機能するように、再構築、再リンクなどを行う必要があるものはありますか??
mysql C API はどうですか?? mysql++ はそれを包むラッパーです。
mysql C API を再構築する必要がありますか??

助けてください、私は何をすべきかわかりません。私はこれを機能させる必要があります。

0 投票する
4 に答える
8178 参照

gcc - 警告IDを持つ警告メッセージを取得するためのg++またはgccオプション

デフォルトでは、gcc /g++は行番号のみの警告メッセージを出力します。g ++またはgccがビルド警告メッセージを警告IDに関連付けて、警告メッセージを(解析せずに)簡単に識別できるようにするオプションを探しています。また、より詳細な警告メッセージを取得するためのオプションは他にありますか?(各警告メッセージはそれ自体でかなり説明的だと思いますが、ただ好奇心が強いです)

ありがとう。

0 投票する
2 に答える
1873 参照

gcc - ARM STR7xx のローダー スクリプト

Eclipse + CDT + yagarto (gnu ツールチェーン) + OpenOCD を使用して ARM をプログラムしようとしています。いくつかのサンプル プロジェクト (yagarto サイトなど) で、多くのリンク情報が (セクション定義と共に) 指定されているリンカー スクリプト (*.ld) を見つけました。実際、私は以前にこのファイルに直面したことがなく (IAR はそれらを必要としません)、一見しただけでは理解しにくいと思います。私の質問は、すべてのプロジェクトでターゲット プロセッサ (STR710FZ2T6) 用のスクリプト ファイルを 1 つ使用できるか、またはこのスクリプトの作成に慣れてプロジェクトごとに作成する必要があるかということです。特定のターゲット プロセッサのすべてのプロジェクトで 1 つのファイルを使用できる場合は、そのようなユニバーサル ファイルをどこで見つけることができるかアドバイスをください。

0 投票する
2 に答える
8386 参照

linux - 異なるバージョンの複数の共有ライブラリをロードする

Linux上に(別の共有ライブラリを介して)依存関係の1つとしてロードするlibfoo.so.1(つまり)実行可能ファイルがあります。SONAMEまた、別のシステムライブラリにリンクし、システムライブラリはシステムバージョンにリンクしますlibfoo.so.2。その結果、との両方 実行中に読み込まれ、バージョン1のライブラリから関数を呼び出すはずだったコードは、バージョン2の新しいシステムライブラリから(バイナリ非互換の)関数を呼び出すことになります。これは、一部のシンボルが同じままであるためです。その結果、通常、スタックスマッシングとそれに続くセグメンテーションフォールトが発生します。libfoo.so.1libfoo.so.2

現在、古いバージョンに対してリンクしているライブラリはクローズドソースのサードパーティライブラリであり、どのバージョンlibfooに対してコンパイルするかを制御することはできません。と仮定すると、残っている他の唯一のオプションは、現在リンクしているシステムライブラリの束を再構築しlibfoo.so.2てリンクすることlibfoo.so.1です。

古いものにリンクするローカルコピーでシステムライブラリを置き換えることを回避する方法はありますlibfooか?両方のライブラリをロードして、正しいバージョンのシンボルを呼び出すコードを作成できますか?だから私はいくつかの特別なシンボルレベルのバージョン管理が必要ですか?