GCC

gcc gives error while using fmod()

问题 fmod 的示例代码: #include <stdio.h> #include <math.h> int main(void) { double x = 0.14527, y = 3.14159; printf("fmod(x, y) = %.6lf\n", fmod(x, y)); return 0; } 编译: $ gcc main.c -o main 我明白了 /tmp/ccztJO01.o:在函数“主”中: main.c:(.text+0x4d): 未定义对“fmod”的引用 collect2: ld 返回 1 个退出状态 然后我在谷歌上找到了这个: $ gcc -lm main

更多相关内容:请点击查看

Incremental build with GCC and manual makefile?

问题 我在 Eclipse 中使用 GCC 和我自己维护的 makefile 对 NRF51822 蓝牙芯片进行编码。 我的问题是,每次我按 build 时,它都会编译所有内容,这开始需要相当长的时间。 我在创建和维护make-files方面没有那么有经验,所以我不知道从哪里开始才能让它构建增量? 我的makefile是这样组成的(我知道有很多,而且我自己还没有创建它-在教程中找到了它,所以我不知道什么是相关的,什么不是:-)): PROJECT_NAME := my_project export OUTPUT_FILENAME #MAKEFILE_NAME := $(CURDIR)/$

更多相关内容:请点击查看

Incremental build with GCC and manual makefile?

问题 我在 Eclipse 中使用 GCC 和我自己维护的 makefile 对 NRF51822 蓝牙芯片进行编码。 我的问题是,每次我按 build 时,它都会编译所有内容,这开始需要相当长的时间。 我在创建和维护make-files方面没有那么有经验,所以我不知道从哪里开始才能让它构建增量? 我的makefile是这样组成的(我知道有很多,而且我自己还没有创建它-在教程中找到了它,所以我不知道什么是相关的,什么不是:-)): PROJECT_NAME := my_project export OUTPUT_FILENAME #MAKEFILE_NAME := $(CURDIR)/$

更多相关内容:请点击查看

Partial specialization failure with GCC

问题 回答完这个问题后,我决定深入研究这个问题,以找到一个具有相同错误的最小且可复制的示例。 假设我有以下主模板,我想将它专门用于std::vector如下: #include <vector> #include <iostream> template<typename T, typename T::value_type v> struct foo; template<typename T, T v> struct foo<std::vector<T>, v> { static constexpr T value = v; }; int main() { std::cout << foo

更多相关内容:请点击查看

Why "unsigned int64_t" gives an error in C?

问题 为什么下面的程序会出错? #include <stdio.h> int main() { unsigned int64_t i = 12; printf("%lld\n", i); return 0; } 错误: In function 'main': 5:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'i' unsigned int64_t i = 12; ^ 5:19: error: 'i' undeclared (first use in this function) 5:19: note

更多相关内容:请点击查看

gcc compiles libavformat code, but g++ does not [duplicate]

问题 这个问题在这里已经有了答案: 未定义的参考,在 Ubuntu 64 位系统上使用 FFMpeg-library (AvCodec) 1 个答案 5年前关闭。 为了确定给定文件的视频持续时间,我使用 libavformat。 我的程序如下所示: #include <stdio.h> #include <libavformat/avformat.h> #include <libavutil/dict.h> int main (int argc, char **argv) { AVFormatContext *fmt_ctx = NULL; int ret; if (argc != 2) {

更多相关内容:请点击查看

symbol lookup in shared libraries

问题 我在下面测试过这样一个简单的程序 /* a shared library */ dispatch_write_hello(void) { fprintf(stderr, "hello\n"); } extern void print_hello(void) { dispatch_write_hello(); } 我的主程序是这样的: extern void dispatch_write_hello(void) { fprintf(stderr, "overridden\n"); } int main(int argc, char **argv) { print_hello()

更多相关内容:请点击查看

Benefits of using clang builtins vs standard functions

问题 Clang 和 GCC 定义了一堆内置函数,我将在这里使用剩余的示例: __builtin_sqrt(x) 但是,标准 C99 在math.h中定义了以下内容 sqrt(x) 为已经存在的方法定义内置函数有什么意义? 我原以为像 sqrt 这样的常见数学函数会被后端优化,所以实际上并不需要内置函数。 出于显而易见的原因,此内置函数的可移植性不如标准 c。 回答1 来自 gcc 手册: GCC 通常会生成特殊代码来更有效地处理某些内置函数; 例如,对 alloca 的调用可能成为直接调整堆栈的单个指令,对 memcpy 的调用可能成为内联复制循环。 生成的代码通常更小更快

更多相关内容:请点击查看

GDB doesn&#39;t show object&#39;s members

问题 我有一个继承自Base的类Impl 。 我正在尝试调试的一个简单代码片段: { Base* base = getObject(); // getObject() returns instance of Impl base->something(); } 当我想检查base时,我得到: p base $1 = (Base *) 0x7fffc408edf0 p *base $2 = {_vptr.Base = 0x7ffff74be100 <vtable for Impl+16>} 我正在用gcc编译我的程序,我使用-O0 -g 。 我也试过-ggdb3而不是-g没有用。 这里可能很重要

更多相关内容:请点击查看