Я не понимаю-Wl, - rpath-Wl,
для удобства я добавил соответствующие страницы ниже.
мое (mis)понимание сначала: если мне нужно разделить параметры с ,, это означает, что второй -Wl это не другой вариант, потому что он приходит перед , что означает, что это аргумент для .
Я не понимаю, как -rpath может быть
4 ответов:
The на gcc передает разделенный запятыми список маркеров как разделенный пробелом список аргументов в линкер. Так что
gcc -Wl,aaa,bbb,cccв конечном итоге становится вызов компоновщика
ld aaa bbb cccв вашем случае, вы хотите сказать,"
ld -rpath .", поэтому вы передаете это в gcc как-Wl,-rpath,.кроме того, вы можете указать повторяющиеся экземпляры-Wl:gcc -Wl,aaa -Wl,bbb -Wl,cccобратите внимание, что между
aaaи второй-Wl.или, в вашем случае,
-Wl,-rpath -Wl,..
вы можете также написать
-Wl,-rpath=.чтобы избавиться от этого надоедливого пространства. Это, возможно, более читабельно, чем добавление дополнительных запятых (это именно то, что передается ld).
еще одна вещь. Возможно, Вам потребуется указать параметр-L а также - например,
-Wl,-rpath,/path/to/foo -L/path/to/foo -lbazили вы можете в конечном итоге с ошибкой, как
ld: cannot find -lbaz
страница man делает это довольно ясно. Если вы хотите передать два аргумента (
-rpathи.) в линкер можно написать-Wl,-rpath,.или
-Wl,-rpath -Wl,.доводы
-Wl,-rpath .вы предложили, не имеет смысла на мой взгляд. Как gcc должен знать, что ваш второй аргумент (.) должен быть передан компоновщику вместо того, чтобы интерпретироваться нормально? Единственный способ, которым он мог бы это знать, - это если бы он имел инсайдерское знание все возможные аргументы компоновщика, чтобы он знал, что-rpathтребуется аргумент после него.
Comments