Я предполагаю, что вы используете gcc и binutils.
Если вы сделаете
readelf -d CeeloPartyServer | grep ORIGIN
Вы должны вернуть строку RPATH, которую вы нашли выше, но вы также должны увидеть некоторые записио флагах.Следующее - из библиотеки, которую я построил.
0x000000000000000f (RPATH) Library rpath: [$ORIGIN/../lib]
0x000000000000001e (FLAGS) ORIGIN
0x000000006ffffffb (FLAGS_1) Flags: ORIGIN
Если вы не видите какие-либо записи FLAGS, вы, вероятно, не сказали компоновщику пометить объект как требующий обработки источника.С binutils ld вы делаете это, передавая флаг -z origin
.
Я предполагаю, что вы используете gcc для управления ссылкой, поэтому в этом случае вам нужно будет передать флаг через компилятор, добавив-Wl,-z,origin
к вашей линии связи gcc.