使用Eclipse和Cygwin设置SystemC AMS-未定义的参考错误



我在Cygwin的Windows 7下安装了SystemC(2.3.2(SystemC AMS(2.1(,没有出现以下问题:

./configure --with-systemc=/home/user/Workspace/systemc-2.3.2
make
make install

然后我进入Eclipse(Photon-4.8.0(并创建了一个新的C/C++项目。对于工具链,我选择了Cygwin GCC。此外,我将以下设置应用于该项目:

包括路径:

"C:cygwin64homeuserWorkspacesystemc-2.3.2include"    
"C:cygwin64homeuserWorkspacesystemc-ams-2.1include"

图书馆搜索路径:

"C:cygwin64homeuserWorkspacesystemc-2.3.2lib-cygwin64"
"C:cygwin64homeuserWorkspacesystemc-ams-2.1lib-cygwin64"

图书馆:

systemc
systemc-ams

现在我尝试执行以下代码:

#include <iostream>
#include "systemc.h"
#include "systemc-ams.h"
int sc_main (int argc, char* argv[])
{
std::cout << "Hello World" << std::endl;
sca_tdf::sca_signal <double> out1;
return 0;
}

我得到一个未定义的参考错误:

11:36:35 **** Incremental Build of configuration Debug for project SystemC-AMS-Test ****
make all 
Building file: ../TestSCAMS.cpp
Invoking: Cygwin C++ Compiler
g++ -I"C:cygwin64homeuserWorkspacesystemc-2.3.2include" -I"C:cygwin64homeuserWorkspacesystemc-ams-2.1include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"TestSCAMS.d" -MT"TestSCAMS.o" -o "TestSCAMS.o" "../TestSCAMS.cpp"
Finished building: ../TestSCAMS.cpp
Building target: SystemC-AMS-Test.exe
Invoking: Cygwin C++ Linker
g++ -L"C:cygwin64homeuserWorkspacesystemc-2.3.2lib-cygwin64" -L"C:cygwin64homeuserWorkspacesystemc-ams-2.1lib-cygwin64" -o "SystemC-AMS-Test.exe"  ./TestSCAMS.o   -lsystemc -lsystemc-ams
C:cygwin64homeuserWorkspacesystemc-ams-2.1lib-cygwin64/libsystemc-ams.a(convert_from_string.o):convert_from_string.cpp:(.text$_ZN8sca_util18sca_implementation18convert_by_istreamIN5sc_dt8sc_logicEEEbRT_RKSs[_ZN8sca_util18sca_implementation18convert_by_istreamIN5sc_dt8sc_logicEEEbRT_RKSs]+0x18f): undefined reference to `sc_dt::sc_logic::scan(std::istream&)'
C:cygwin64homeuserWorkspacesystemc-ams-2.1lib-cygwin64/libsystemc-ams.a(convert_from_string.o):convert_from_string.cpp:(.text$_ZN8sca_util18sca_implementation18convert_by_istreamIN5sc_dt8sc_logicEEEbRT_RKSs[_ZN8sca_util18sca_implementation18convert_by_istreamIN5sc_dt8sc_logicEEEbRT_RKSs]+0x18f): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `sc_dt::sc_logic::scan(std::istream&)'
collect2: error: ld returned 1 exit status
make: *** [makefile:46: SystemC-AMS-Test.exe] Error 1
11:36:38 Build Failed. 1 errors, 0 warnings. (took 3s.199ms)

这里可能有什么问题?

在一些平台(如windows(上,链接阶段不允许使用cygwin和其他未定义的符号
链接顺序很重要

"-lsystemc -lsystemc-ams"" -lsystemc-ams -lsystemc"不同

由于CCD_ 4使用CCD_ 5的符号,所以第二版本保证在链路阶段解析所有符号。这也是编译任何程序的原因——库调用位于命令末尾。

gcc dummy.c -lsystemc工作,而gcc -lsystemc dummy.c失败,undefined symbols错误

最新更新