我有一个为gcc 3.2.3 1 编写的嵌入式应用程序,我想链接一个由我自己编写并使用g ++ 7.2.0编译的库。
我已经构建并链接了几乎没有代码的测试库,但是由于我正在尝试更相关的内容,因此我遇到了一些与未定义符号有关的问题。当前,我有以下几种错误:
对
__assert_func
的未定义引用
如果我使用g ++ 3.2.3进行编译,则不会出现此错误。
我想使用g ++ 7.2.0来访问新的C ++ 14(也许是C ++ 17)功能以及标准库的某些新部分(std::chrono::duration
等)。
有没有办法使这项工作有效?
我可以通过定义自己的__assert_func
来解决上述问题:
extern "C" void __assert(const char *, int, const char *);
extern "C" void __assert_func(
const char *file, int line, const char *, const char *e) {
__assert(file, line, e);
}
...但是我想知道是否有更简单的方法?特别是,可能还会有其他名称更改,我不想每次都进行修改...
我假设我不会使用新功能,这些新功能需要的代码不是旧版gcc版本(例如std::thread
或std::chrono::system_clock
)。
相关:
1 该应用程序和库是使用sparc-rtems
gcc工具链和某些第三方工具(例如JamaicaVM)构建的。我不能简单地更改用于构建主应用程序的工具链,因为与新的编译器工具链存在许多不兼容...