Позвольте мне сначала установить контекст, это ROOT ЦЕРН и CINT и ACLiC и т.д.Составление нескольких исходных (главных и заголовков) файлов и их связывание в ROOT CINT?
Предположим, у меня есть главный macro
имени macro.cpp
и два заголовка h1.cpp
(содержит определение функции) и h1.h
, содержащий декларацию функции, определенной в h1.cpp
Аналогичным образом у меня есть h2.cpp
и h2.h
. Основная программа macro.cpp
вызывает эти функции внутри h1
и h2
. Я была успешной компиляции исходных файлов с помощью:
root [0] .L h1.cpp+
root [1] .L h2.cpp+
root [2] .L macro.cpp+
который произвел три .so
файлы macro_cpp.so
, h1_cpp.so
и h2_cpp.so
. Я хочу знать, что с ними делать? Как мне это сделать: link
, так что у меня есть что-то вроде «macro.out
» или что-то в этом роде (один файл executable
), который я могу выполнить (хотя я не знаю, как!) И достичь того, чего я хотел достичь макрос.
Примечание: Если я просто загрузить все файлы с помощью .L file_name.cpp
и т.д., и просто выполнить основной макрос с помощью .x macro.cpp
то все работает отлично и у меня есть результаты, но это не то, что я хочу! Я хочу скомпилировать, как в обычном g++
, и, кстати, на каждом форуме каждый продолжает советоваться с компиляцией с использованием .L file_name.cpp+
или ++
.. Мне бы очень хотелось узнать всю историю. Потому что никто, кажется, не объясняет за пределами .L file_name.cpp+
.. что дальше? Что делать с .so
и т. Д.
Я новичок, я по-настоящему оценю простой и шаг за шагом ответ и объяснение.
Спасибо.
Edit-1: Я работаю с:
г ++ (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.4) 5.4.0 20160609
Edit-2: ROOT родственный информация: ROOT 5,34/36 (v5-34-36 @ v5-34-36, DIC 07 2016, 23:31:51 на linuxx8664gcc) CINT/ROOT C/C++ Интерпретатор версия 5.18.00, июль 2, 2010
.so динамичны подключаемая библиотека как. dll в Windows. Короче говоря, это скомпилированный код, который может использоваться несколькими программами. Вы можете использовать команду оболочки: «ldd ./myprogram», чтобы увидеть все .so, необходимые вашей программе. – baddger964
, так как вы спрашиваете «что дальше?»: После '.L macro.cpp +' вы можете выполнять функции, которые определены в этом файле, например '.L macro.cpp +; макросъемки (3,1415); '. сохраненный '.so' будет прочитан в следующий раз, когда вы сделаете' .L macro.cpp + '(без перекомпиляции макросов, которые уже скомпилированы). или вы можете просто загрузить ранее скомпилированные '.so' файлы с помощью' gSystem-> Load ("macro_C.so"); '. – pseyfert
@pseyfert это замечательно. – quanta