问题标签 [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.

0 投票
1 回答
391 浏览

c - 如何使用编译器 tcc 在窗口中添加 gsl 库?

目前,我可以通过以下命令使用 windows 命令提示符编译和运行基本的“Hello World”程序:

其次是

其中 test 是包含"Hello World"程序代码的文件的名称。

tcc我将文件夹安装在我的 c:\ 驱动器上。我有另一个需要gsl运行库的程序,但我不知道从哪里以及如何正确安装库以及在程序编译和运行时如何调用它。

0 投票
1 回答
361 浏览

c - 通过 TCC 编译 C 时出现 GLFW gl.h 错误

当我尝试用 TCC 编译一个简单的 GLFW 程序时,我在 gl.h 头文件中得到一个错误。

我用于编译的命令是

这是此命令的完整输出

这是我要编译的简单程序

我链接有问题吗?或者不链接我应该链接的东西?我的编译参数有什么问题?

0 投票
1 回答
82 浏览

c - 为什么使用结构的输出不一样

我正在使用最新版本的 TCC (tcc-0.9.26-win64-bin.zip)。由于某种原因,此代码的输出不是我所期望的(相同)。

我运行脚本:

它在eval中运行良好,所以我做错了什么?

0 投票
0 回答
345 浏览

cmd - 如何使用 cmd 运行 TCC(Tiny C 编译器)?

我正在尝试将小型 C 编译器与 cmd 一起使用,但我忘记了如何在 cmd 上找到 tcc 文件。如何将 cmd 与微型 c 编译器链接?

0 投票
0 回答
451 浏览

c - C - tcc 在 commdlg.h 中发现错误?

我正在尝试编写一个包含 OPENFILENAME 的 C 程序,当然我需要头文件。因此,按照 tcc 提供的说明,我下载了 MinGW 用于 Win32 API 的头文件(和库文件),并按照说明将它们放在适当的目录中。但是,当我来编译程序时,出现以下错误:

这似乎很奇怪,因为它是一个标准标题。所以,我查了一下,它是typedef __AW(CHOOSECOLOR) CHOOSECOLOR,*LPCHOOSECOLOR;,这对我来说看起来不是很有效,但我并不是真正的 C 专家,我主要是在 Linux 中编写。我不知道为什么会出错,也不知道如何解决它?这是tcc中的错误吗?

作为这应该是可能的证据,这里是来自 tcc 自述文件的适当段落:

头文件:


系统头文件(_mingw.h 除外)来自 MinGW 发行版:

http://www.mingw.org/

从 Windows 标头中,仅包含一个最小集。如果您需要更多,请获取 MinGW 的“w32api”包。

我知道这个问题类似于在TCC 中包含 Windows.h 时出现的错误,但我的“windows.h”文件确实有效 - 只是这个没有。

有谁知道如何解决这个问题?我真的很闲!

0 投票
1 回答
673 浏览

c - tcc:错误:未定义的符号“pthread_create”

我正在尝试用 tcc 编译它

在此处输入图像描述

我有这些错误

在此处输入图像描述

在错误之前它是“找不到 pthread.h”,我将 pthread、pthread_compat、pthread_signal、pthread_time、pthread_unistd 头文件从 gcc include dir 复制到 tcc include dir !...现在我遇到了上述错误..我认为与链接有关,但我不确切知道:/

0 投票
2 回答
637 浏览

c++ - 尝试使用 tcc 针对 gcc 生成的 .o 文件编译源时的奇怪行为

我正在尝试使用 tcc(版本 0.9.26)针对 gcc 生成的 .o 文件编译源代码,但它有奇怪的行为。gcc(版本 5.3.0)来自 MinGW 64 位。

更具体地说,我有以下两个文件(te1.c te2.c)。我在 windows7 盒子上做了以下命令

请注意,它从字符串中截断了 4 个字节1234567in dummy!!!\n。想知道是否出了什么问题。

谢谢金

========文件te1.c============

========文件te2.c===========

更新 1

看到 te1.o(由 tcc 编译的 te1.c)和 te1_gcc.o(由 gcc 编译的 te1.c)之间的汇编差异。在编译的 tcc 中,我看到了lea -0x4(%rip),%rcx,在编译的 gcc 中,我看到了lea 0x0(%rip),%rcx. 不知道为什么。

更新2

使用二进制编辑器,我更改了 te1.o 中的机器代码(由 gcc 生成)并更改lea 0(%rip),%rcxlea -0x4(%rip),%rcx并使用 tcc 链接它,生成的 exe 工作正常。更准确地说,我做到了

更新 3

根据要求,这是objdump -r te1.o

0 投票
1 回答
483 浏览

c - Recognizing clang, gcc, and tcc by implementation-defined macros

I use clang, gcc, and tcc, and I'd like to be able to differentiate between the three in a common header.

Judging by their macro dumps, I expect that the presence of the __clang__ macro will uniquely identify clang.

I'm unable to get a macro dump with tcc ( $compiler -x c -E -dM /dev/null doesn't work in its case ).

What is the macro(s) (if any) that will uniquely identify gcc (and possibly tcc)?

0 投票
1 回答
647 浏览

c - MinGW - 为什么 C 'hello world' 可执行文件是 42kb?

如果我用 MinGW 编译 C hello world,生成的 exe 是 42Kb。如果我使用 Tiny C 编译器,我会得到 2Kb。(在这两种情况下都没有指定任何选项或做任何有趣的事情,只需 gcc hello.c -o hello.exe)

现在我知道需要最少的启动代码;但是 mingw 放在那里的额外 40kb 的东西是什么,它有什么作用,为什么需要它?

0 投票
1 回答
418 浏览

linux - 在最小的动态链接 ELF 程序中需要哪些部分?

我组装了一个简单的“Hello, world”程序并使用 TCC 链接它,之后我得到了 4196 字节的可执行文件。

该计划有 31 个部分:['', '.text', '.data', '.bss', '.symtab', '.strtab', '.rel.text', '.rodata', '.rodata.cst4', '.note.GNU-stack', '.init', '.rel.init', '.gnu.linkonce.t.__x86.get_pc_thunk.bx', '.fini', '.rel.fini', '.text.unlikely', '.text.__x86.get_pc_thunk.bx', '.eh_frame', '.rel.eh_frame', '.preinit_array', '.init_array', '.fini_array', '.interp', '.dynsym', '.dynstr', '.hash', '.dynamic', '.got', '.plt', '.rel.got', '.shstrtab']. 我觉得对于这样一个简单的二进制文件来说,这真的很多 - 哪些是我的程序运行所必需的?

这是源代码和我编译它的方式:

nasm main.asm -f elf32 && tcc main.o -o main

32bit/ubuntu:16.04在Docker 镜像上测试。

注意:这个问题与这个问题不同,因为我不是在寻找一个紧张的 Linux ELF,而是一个允许我调用动态符号的问题。我相信由于动态链接的性质,我需要一些额外的部分。