Неспособный пользователь входа в систему [дубликат]

Невозможность связывания с соответствующими библиотеками / объектными файлами или компиляция файлов реализации

Обычно каждая единица перевода генерирует объектный файл, содержащий определения символов, определенных в этой единицы перевода. Чтобы использовать эти символы, вам необходимо связать эти объектные файлы.

В разделе gcc вы должны указать все объектные файлы, которые должны быть связаны вместе в командной строке, или скомпилировать файлы реализации вместе.

g++ -o test objectFile1.o objectFile2.o -lLibraryName

Здесь libraryName - это просто имя библиотеки, без добавления к платформе. Так, например, в файлах библиотеки Linux обычно называют libfoo.so, но вы должны писать только -lfoo. В Windows этот же файл можно назвать foo.lib, но вы будете использовать тот же аргумент. Возможно, вам придется добавить каталог, в котором эти файлы можно найти, используя -L‹directory›. Обязательно не записывайте пробел после -l или -L.

Для XCode: добавьте пути поиска заголовка пользователя -> добавьте путь поиска библиотеки -> перетащите фактическую ссылку библиотеки в

В MSVS файлы, добавленные в проект, автоматически связывают их объектные файлы, и будет создан файл lib (в общем использовании). Чтобы использовать символы в отдельном проекте, вам нужно будет добавить файлы lib в параметры проекта. Это делается в разделе Linker свойств проекта в Input -> Additional Dependencies. (путь к файлу lib должен быть добавлен в Linker -> General -> Additional Library Directories). При использовании сторонней библиотеки, которая предоставляется с файлом lib, отказ в этом обычно приводит к ошибке.

Также может случиться так, что вы забудете добавить файл в компиляцию, и в этом случае объектный файл не будет сгенерирован. В gcc вы должны добавить файлы в командную строку. В MSVS добавление файла в проект заставит его скомпилировать его автоматически (хотя файлы могут, вручную, быть отдельно исключены из сборки).

В программировании Windows контрольный знак, который вы не связывали необходимая библиотека состоит в том, что имя неразрешенного символа начинается с __imp_. Посмотрите имя функции в документации, и она должна сказать, какую библиотеку вам нужно использовать. Например, MSDN помещает информацию в поле внизу каждой функции в разделе «Библиотека».

116
задан rgrinberg 25 January 2014 в 02:10
поделиться

4 ответа

С Ansible 1.9 или новее

Ansible использует директивы become, become_user и become_method для достижения эскалации привилегий. Вы можете применить их к целой пьесе или книжке, установить их в включенную playbook или установить для нее определенную задачу.

- name: checkout repo
  git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
  become: yes
  become_user: some_user

Вы можете использовать become_with, чтобы указать, как достигается эскалация привилегий , по умолчанию sudo.

Директива действует для области действия блока, в котором она используется ( examples ).

См. Хосты и пользователи для некоторых дополнительных примеров и Станьте (Privilege Escalation) для более подробной документации.

В дополнение к областям действия become и become_user, Ansible 1.9 добавил некоторые новые переменные и параметры командной строки, чтобы установить эти значения для продолжительности воспроизведения в отсутствие явных директив:

Начиная с Ansible 2.0.2.0, более старый sudo / sudo_user синтаксис, описанный ниже, все еще работает, но уведомление об устаревании указывает, «Эта функция будет удалена в будущей версии».


Предыдущий синтаксис, устаревший по состоянию на Ansible 1.9 и запланированный для удаления:

- name: checkout repo
  git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
  sudo: yes
  sudo_user: some_user
192
ответ дан Davi Alves 3 September 2018 в 17:38
поделиться

В Ansible 2.x вы можете использовать block для группы задач:

- block:
    - name: checkout repo
      git:
        repo: https://github.com/some/repo.git
        version: master
        dest: "{{ dst }}"
    - name: change perms
      file:
      dest: "{{ dst }}"
      state: directory
      mode: 0755
      owner: some_user
  become: yes
  become_user: some user
19
ответ дан Arbab Nazar 3 September 2018 в 17:38
поделиться

Решение состоит в том, чтобы использовать оператор include с remote_user var (описать там: http://docs.ansible.com/playbooks_roles.html ), но это нужно сделать при playbook вместо уровня задачи.

6
ответ дан Guillaume Dedrie 3 September 2018 в 17:38
поделиться

В Ansible> 1.4 вы можете фактически указать удаленного пользователя на уровне задачи, который должен позволить вам войти в систему в качестве этого пользователя и выполнить эту команду, не прибегая к sudo. Если вы не можете войти в систему в качестве этого пользователя, тогда будет также работать решение sudo_user.

---
- hosts: webservers
  remote_user: root
  tasks:
    - name: test connection
      ping:
      remote_user: yourname

См. http://docs.ansible.com/playbooks_intro.html#hosts-and-users

20
ответ дан trcarden 3 September 2018 в 17:38
поделиться
Другие вопросы по тегам:

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