У меня проблема при связывании кода c ++ с g ++.У меня есть два файла: file1
и file2
:
file1:
int A(){
return B();
}
int C(){
return 0;
}
file2:
int B(){
return 4;
}
Я создаю общую библиотеку, которая использует функцию C()
, поэтому я компилирую только с file1
, а не file2
,У меня нет проблем при компиляции или компоновке, но когда я использую разделяемую библиотеку, при выполнении я получаю сообщение об ошибке, что B
не определено.
Если я компилирую и связываю с file2
Iнет проблем.Но я не хочу этого решения, потому что у меня есть несколько рекурсивных включений.
Я попытался скомпилировать с --ffunctions-sections
и --fdata-sections
, а затем связать с -Wl,--gc-sections
, но это не решило мою проблему.
Есть ли способ связать только те символы (здесь функции), которые я на самом деле использую?