草庐IT

llvm-gcc

全部标签

linux - 为什么使用 g++ 而不是 gcc 来编译 *.cc 文件?

我编译了一个使用g++而不是gcc的库。一开始我以为源代码是用C++写的,后来发现*.cc文件里没有任何C++代码。为了证实这一点,我用gcc替换了原始makefile中的g++。而且我仍然得到了正确的程序。谁能解释一下?我不是第一次遇到这种情况。 最佳答案 这取决于您在makefile中究竟更改了什么。gcc/g++实际上只是一个前端驱动程序,它根据您提供的选项调用实际的编译器和/或链接器。如果您将编译器调用为gcc:它将根据文件扩展名(.c或.cc/.cpp编译为C或C++/);它将链接为C,即它不会引入C++库,除非您为此专门

linux - 为什么使用 g++ 而不是 gcc 来编译 *.cc 文件?

我编译了一个使用g++而不是gcc的库。一开始我以为源代码是用C++写的,后来发现*.cc文件里没有任何C++代码。为了证实这一点,我用gcc替换了原始makefile中的g++。而且我仍然得到了正确的程序。谁能解释一下?我不是第一次遇到这种情况。 最佳答案 这取决于您在makefile中究竟更改了什么。gcc/g++实际上只是一个前端驱动程序,它根据您提供的选项调用实际的编译器和/或链接器。如果您将编译器调用为gcc:它将根据文件扩展名(.c或.cc/.cpp编译为C或C++/);它将链接为C,即它不会引入C++库,除非您为此专门

c - 防止 gcc 内联函数

这个问题在这里已经有了答案:HowcanItellgccnottoinlineafunction?(8个答案)关闭7年前。是否可以防止gcc编译器内联特定函数。如果是这样,如何?不要告诉我降低优化级别。我想要所有的优化,但是标记一个特定的函数不被编译器内联,就像变量的volatile一样。我想这样做的原因是因为我的函数使用内联汇编定义的标签,当gcc内联函数时,gcc搞砸了,因为内联导致gcc创建该标签的多个实例。

c - 防止 gcc 内联函数

这个问题在这里已经有了答案:HowcanItellgccnottoinlineafunction?(8个答案)关闭7年前。是否可以防止gcc编译器内联特定函数。如果是这样,如何?不要告诉我降低优化级别。我想要所有的优化,但是标记一个特定的函数不被编译器内联,就像变量的volatile一样。我想这样做的原因是因为我的函数使用内联汇编定义的标签,当gcc内联函数时,gcc搞砸了,因为内联导致gcc创建该标签的多个实例。

c++ - LLVM out of source pass 构建 : Loadable modules not supported (on Linux)

几周前,我在debianwheezy上从主干编译并安装了LLVM(配置和制作),现在尝试在源代码外编译llvm-mutatepass.AFAICC,llvm-mutate遵循cmakeoutofsourcepassbuildinstructions.尝试构建llvm-mutate时mkdirbuildcdbuildcmake-DCMAKE_MODULE_PATH=/usr/local/share/llvm/cmake../我得到:--忽略变异--此平台不支持可加载模块。嗯?opt和可加载channel(位于llvm_trunk/build/Debug+Asserts/lib/xxx.s

c++ - LLVM out of source pass 构建 : Loadable modules not supported (on Linux)

几周前,我在debianwheezy上从主干编译并安装了LLVM(配置和制作),现在尝试在源代码外编译llvm-mutatepass.AFAICC,llvm-mutate遵循cmakeoutofsourcepassbuildinstructions.尝试构建llvm-mutate时mkdirbuildcdbuildcmake-DCMAKE_MODULE_PATH=/usr/local/share/llvm/cmake../我得到:--忽略变异--此平台不支持可加载模块。嗯?opt和可加载channel(位于llvm_trunk/build/Debug+Asserts/lib/xxx.s

c++ - 默认情况下,gcc 是否将程序链接到静态库或动态库?

我的Linux系统上同时安装了同一个库的静态和动态版本:/usr/lib/libsample.a/usr/lib/libsample.so如果我设置参数-lsample,这些库中的哪一个将使用gcc?gccxxx.c-lsample如何强制gcc使用库的静态或动态版本 最佳答案 http://www.rapidtables.com/code/linux/gcc/gcc-l.htm您无需执行任何操作,默认为动态。但是,它必须向二进制文件添加一些东西以帮助它在运行时正确使用动态库。 关于c+

c++ - 默认情况下,gcc 是否将程序链接到静态库或动态库?

我的Linux系统上同时安装了同一个库的静态和动态版本:/usr/lib/libsample.a/usr/lib/libsample.so如果我设置参数-lsample,这些库中的哪一个将使用gcc?gccxxx.c-lsample如何强制gcc使用库的静态或动态版本 最佳答案 http://www.rapidtables.com/code/linux/gcc/gcc-l.htm您无需执行任何操作,默认为动态。但是,它必须向二进制文件添加一些东西以帮助它在运行时正确使用动态库。 关于c+

linux - 为什么 gcc 4.x 在调用方法时默认为 linux 上的堆栈保留 8 个字节?

作为asm的初学者,我正在查看gcc-S生成的asm代码来学习。为什么gcc4.x在调用方法时默认为堆栈保留8个字节?func18是空函数,没有返回值,没有参数,没有定义局部变量。我不明白为什么这里保留8个字节(任何论坛/网站都没有提及原因,人们似乎认为这是理所当然的)是为了%ebp只是推送吗?或返回类型?!非常感谢!.globl_func18_func18:pushl%ebpmovl%esp,%ebpsubl$8,%esp.text 最佳答案 一些指令要求某些数据类型与16字节边界对齐(特别是SSE数据类型__m128)。为了满足

linux - 为什么 gcc 4.x 在调用方法时默认为 linux 上的堆栈保留 8 个字节?

作为asm的初学者,我正在查看gcc-S生成的asm代码来学习。为什么gcc4.x在调用方法时默认为堆栈保留8个字节?func18是空函数,没有返回值,没有参数,没有定义局部变量。我不明白为什么这里保留8个字节(任何论坛/网站都没有提及原因,人们似乎认为这是理所当然的)是为了%ebp只是推送吗?或返回类型?!非常感谢!.globl_func18_func18:pushl%ebpmovl%esp,%ebpsubl$8,%esp.text 最佳答案 一些指令要求某些数据类型与16字节边界对齐(特别是SSE数据类型__m128)。为了满足