Не удалось скомпилировать с Gem5

Пытаюсь скомпилировать gem5 на mac os. Я решил 3 проблемы, с которыми сталкивался до сих пор, но остановился на последней ошибке.

Ошибка говорит:

Undefined symbols for architecture x86_64:
"PyTrafficGen::start(pybind11::object)", referenced from:
module_init(pybind11::module&) in lib.o.partial
"typeinfo for PyTrafficGen", referenced from:
pybind11::detail::type_caster_base::cast(PyTrafficGen const*, pybind11::return_value_policy, pybind11::handle) in lib.o.partial
pybind11::class_<PyTrafficGen, BaseTrafficGen, std::1::unique_ptr<PyTrafficGen, pybind11::nodelete> >::class<>(pybind11::handle, char const*) in lib.o.partial
pybind11::class<PyTrafficGen, BaseTrafficGen, std::__1::unique_ptr<PyTrafficGen, pybind11::nodelete> >::init_instance(pybind11::detail::instance*, void const*) in lib.o.partial
_ZZN8pybind1112cpp_function10initializeIZNS0_C1INSt3__110shared_ptrI7BaseGenEE12PyTrafficGenJyEJNS_4nameENS_9is_methodENS_7siblingEEEEMT0_FT_DpT1_EDpRKT2_EUlPS7_yE_S6_JSL_yEJS8_S9_SA_EEEvOSC_PFSB_SE_ESK_ENKUlRNS_6detail13function_callEE_clESS in lib.o.partial
_ZZN8pybind1112cpp_function10initializeIZNS0_C1INSt3__110shared_ptrI7BaseGenEE12PyTrafficGenJyyyyyyhyEJNS_4nameENS_9is_methodENS_7siblingEEEEMT0_FT_DpT1_EDpRKT2_EUlPS7_yyyyyyhyE_S6_JSL_yyyyyyhyEJS8_S9_SA_EEEvOSC_PFSB_SE_ESK_ENKUlRNS_6detail13function_callEE_clESS in lib.o.partial
_ZZN8pybind1112cpp_function10initializeIZNS0_C1INSt3__110shared_ptrI7BaseGenEE12PyTrafficGenJyyyyyyhyjjjjjjEJNS_4nameENS_9is_methodENS_7siblingEEEEMT0_FT_DpT1_EDpRKT2_EUlPS7_yyyyyyhyjjjjjjE_S6_JSL_yyyyyyhyjjjjjjEJS8_S9_SA_EEEvOSC_PFSB_SE_ESK_ENKUlRNS_6detail13function_callEE_clESS in lib.o.partial
_ZZN8pybind1112cpp_function10initializeIZNS0_C1INSt3__110shared_ptrI7BaseGenEE12PyTrafficGenJyyyyyyhyjjjjjjjEJNS_4nameENS_9is_methodENS_7siblingEEEEMT0_FT_DpT1_EDpRKT2_EUlPS7_yyyyyyhyjjjjjjjE_S6_JSL_yyyyyyhyjjjjjjjEJS8_S9_SA_EEEvOSC_PFSB_SE_ESK_ENKUlRNS_6detail13function_callEE_clESS in lib.o.partial
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation).

Mac OS High Sierra 10.13.6.

версия clang: Apple LLVM версии 10.0.0 (clang-1000.11.45.5)

Цель: x86_64-apple-darwin17.7.0

Модель потока: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Любое решение?


person Belal JahanNia    schedule 26.12.2018    source источник
comment
Привет, Бетал, ознакомьтесь с синтаксисом разметки блока кода: stackoverflow.com/editing-help, который значительно улучшит читаемость вашего Почта. Также всегда используйте коммит gem5 при сообщении о проблемах компиляции. Подумайте также о том, чтобы разместить это в списке рассылки.   -  person Ciro Santilli    schedule 26.12.2018


Ответы (1)


Я нашел решение.

Изменения в ссылке ниже вызывают эту ошибку:

https://gem5-review.googlesource.com/c/public/gem5/+/11518/

Вы можете отменить изменения в файле SConscript в “gem5/src/cpu/testesr/traffic-gen/SConscript” и попробовать совместную компиляцию.

Я мог бы хорошо скомпилировать и запустить запасной тест, отменив изменения в файле SConscript, как показано ниже:

    Import('*')


Source('base.cc')
Source('base_gen.cc')
Source('dram_gen.cc')
Source('dram_rot_gen.cc')
Source('exit_gen.cc')
Source('idle_gen.cc')
Source('linear_gen.cc')
Source('random_gen.cc')
Source('stream_gen.cc')

DebugFlag('TrafficGen')
SimObject('BaseTrafficGen.py')

#if env['USE_PYTHON']:
#   Source('pygen.cc', add_tags='python')
 #  SimObject('PyTrafficGen.py')

# Only build the traffic generator if we have support for protobuf as the
# tracing relies on it
if env['HAVE_PROTOBUF']:
   SimObject('TrafficGen.py')
   Source('trace_gen.cc')
   Source('traffic_gen.cc')

Надежда отлично подходит для всех, кто сталкивается с одной и той же ошибкой.

Ура, Белал.

person Belal JahanNia    schedule 31.12.2018