То, как скомпилировать с третьим лицом, освобождает правильно?

Это - поведение, показанное grep -c.

Вероятно, у Вас есть файл, имя которого запускается с - и содержит a c символ и Вы используете GNU grep, не устанавливая POSIXLY_CORRECT переменная среды.

Использование:

grep -- delete *

или лучше:

grep delete ./*

-- отмечает конец опций так, чтобы то имя файла не рассматривали как опцию (с POSIX grep, это не было бы начиная с неопции delete аргумент отметил бы конец опций), но он не решит проблему названного файла -. grep delete ./* более устойчиво, но имеет недостаток вывода дополнительного ./ для соответствия файлам (хотя это можно считать премией, так как это помогает определить имена файлов, которые содержат символы новой строки).

2
13.04.2017, 15:36
1 ответ

Корректный вызов согласно спискам каталогов, которые Вы дали, будет:

-L/usr/local/lib/boost1.55/lib/ -lboost_system

-L используется для определения пути, где библиотеки найдены. -I для заголовков, которые не помогут для ошибок компоновщика (Вы получите ошибки компилятора, если Вы будете отсутствовать, включают пути).

Что касается boost_system по сравнению с boost_system-mgw46-mt-sd-1_54 - у Вас ничего нет названным "boost_system-mgw46-mt-sd-1_54.so[.version]" в Вашем каталоге библиотеки, таким образом, Вы не можете использовать то второе имя.

(У Вас также есть контуры текста Windows в Вашем Make-файле - стараются не смешивать эти два, используют условные выражения в Ваших Make-файлах к путям Unix и отдельным окнам.)

3
27.01.2020, 22:06
  • 1
    Если я делаю это, я добираюсь: undefined reference to boost::detail::once_epoch_mutex' в то время как "делают". Интересно, почему нет такой библиотеки в каталоге повышения. Кроме того, если я опускаю флаги повышения -mgw46-mt-sd-1_54 как может я устанавливать его, как описано здесь: boost.org/doc/libs/1_47_0/more/getting_started / … –  Bevor 08.12.2013, 14:54
  • 2
    , Что вещь находится, вероятно, в boost_thread библиотека, добавляет это также. –  Mat 08.12.2013, 14:59
  • 3
    Существует также каталог/usr/local/lib/boost1.55/include/boost/с большим количеством заголовочных файлов. Я пытался добавить-I/usr/local/lib/boost1.55/include/boost/к INCPATH в make-файле, но ошибка является все еще тем же. Там что-то еще должно сделать? –  Bevor 08.12.2013, 15:22
  • 4
    Не путайте ошибки компиляции с ошибками компоновщика. Если Вы получаете "неопределенные ссылки", это - ошибки компоновщика. Компилятор уже сделан, добавление включают пути, не поможет. Необходимо посмотреть на каждую неопределенную ссылку, найти, какой библиотеке она принадлежит, и добавьте ту библиотеку. (И отсутствующая ссылка в Вашем первом комментарии находится действительно в boost_thread) –  Mat 08.12.2013, 15:23
  • 5
    Спасибо, но я не понимаю как. Я уже связал каталог, который содержит поток -L/usr/local/lib/boost1.55/lib/. Я также попробовал-L/usr/local/lib/boost1.55/lib/libboost_thread или-L/usr/local/lib/boost1.55/lib/boost_thread, но ничто не изменяется. Каталог содержит libboost_thread.a, libboost_thread.so и libboost_thread.so.1.55.0 –  Bevor 08.12.2013, 15:52

Теги

Похожие вопросы