問題タブ [tcc]
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.
c - tcc でのヌル ポインターの検出
非常に単純なリンク リストを作成したところ、自分のコードとの出力の違いにtcc filename.c
気付きました。tcc filename.c -run
コンパイルしtcc filename.c
てから実行すると、期待どおりの出力が生成されます。
これは、GCC と clang で得られる出力でもあります。
私が使用すると、次のようtcc filename.c -run
になります。
最後の数値は常にゼロで、他の 2 つの余分な値は実行するたびに異なります。
関数と関数に追加l1 -> next = NULL;
するソリューションを見つけました。newList
l2 -> next = NULL;
appendList
しかし、なぜ出力に違いがあるのか 疑問に思っていました。NULL
コンパイラにバグがありますか、それともほとんどのコンパイラで動作するにもかかわらずポインタを初期化しないのは間違っていましたか?
c - Build TinyCCompiler(TCC) のソースからの crt1.o,crti.o のエラーの修正方法は?
ソースから TinyCCompiler(TCC) をビルドする際の crt1.o,crti.o のエラーを修正するにはどうすればよいですか?
https://github.com/LuaDist/tcc
デスクトップシステム(ubuntu)でこれをテストし、サーバー(centos)でもテストしています。両方の OS で、エラーを表示します。
エラー :
詳細 :
guest@Base:~/Gits/tcc-compiler$ ./configure --prefix=build
guest@Base:~/Gits/tcc-compiler$ sudo make
guest@Base:~/Gits/tcc-compiler$ sudo make install
guest@Base:~/Gits/tcc-compiler$ cat test2.c
エラー :
guest@Base:~/Gits/tcc-compiler$ build/bin/tcc test2.c
$ find /usr/ -name crti*
$ find /usr/ -name crt1*
(完全なコマンドはhttps://pastebin.ubuntu.com/26211506/で入手できます)
どのようにエラーを修正できますか?
私はsudo apt install tcc
.(バグやエラーなしで)を使って tcc をインストールできます。
しかし、ソースから tcc をインストールしたい (これにはエラーがあります)
新しいアップデート
tcc.h ファイル内:
に変わり/usr/lib
ます/usr/lib/x86_64-linux-gnu
。
$ build/bin/tcc test.c -run
$ /build/bin/tcc test.c
新しいアップデート
guest@Base:~/Gits/tcc-try/_build/_install/bin$ ./tcc test.c
インクルードファイルが見つからないというエラーを修正するには?!
関連質問 : TinyCCompiler(TCC) のインクルード ファイルのエラーのエラーを修正するにはどうすればよいですか?
c - 基本的な C SDL2 プログラムは、GCC では動作しますが、TCC では動作しません (Linux)
私は次のCコードを持っています(明確にするために、それは完全なコードではなく、イベントやそのようなものを処理する必要があることを知っています):
これを GCC (シバン行なし) でコンパイルし、実行可能ファイルを開始すると、問題なく動作しますが、TCC のコンパイルおよび実行機能のシンプルさとその速度が気に入っています。
ただし、コンパイルされた実行可能ファイルは次のコンソール出力を提供し、その後永久にハングアップし、CTRL-C で強制終了することさえできません。
ここで提案されているように SDL_MAIN_HANDLED を追加しましたが、何も変わりませんでした。
誰?
c - Tiny C Compiler の生成コードが余分な (不要な?) NOP と JMP を発行する
誰かがこのコードの理由を説明できますか:
tcc code.c を使用して tcc でコンパイルすると、次のasm が生成されます。
だと思います
いくつかのメモリ調整のためにあるかもしれませんが、どうですか
つまり、コンパイラが次の命令にジャンプするニアジャンプを挿入するのはなぜですか? とにかく LEAVE が実行されるのでしょうか?
TCC 0.9.26 を使用して 32 ビットの実行可能ファイルを生成する 64 ビットの Windows を使用しています。