Это не каталог linux ошибка

Нет такого файла или каталога

Приветствую. Проблема такая — скачал игру (ее нет в репозиториях), распаковал, пытаюсь запустить — получаю

chmod +x cataclysm-tiles

Сделал естественно, не помогает.

Попробуй полный путь указать (/home/user/Downloads/cataclysmdda-0.B/cataclysm-tiles) или через cataclysm-launcher

Покажи еще вывод file cataclysm-tiles и uname -a.

Покажи еще вывод file cataclysm-tiles и uname -a.

Попробуй полный путь указать (/home/user/Downloads/cataclysmdda-0.B/cataclysm-tiles) или через cataclysm-launcher

Спасибо, помогло. Правда пришлось ставить кучу всего дополнительно, но заработало.

Ну да, я собственно это и имел в виду:

ELF 32-bit LSB executable
x86_64 x86_64 x86_64

Источник

linux / init.h: нет такого файла или каталога

Я пытаюсь создать модуль ядра для своего класса и получаю огромное количество ошибок, но в верхней части этой стены находится печально известная ошибка «Нет такого файла или каталога». Похоже, в этом корень проблемы. Похоже, что это влияет не только на init.h, но также на module.h и kernel.h. Первые три строки программы выглядят следующим образом:

Я осмотрелся и попробовал другие пути, где эти файлы должны быть при просмотре аналогичных проблем, но пока ничего не помогло. Самое странное, что я уже использовал этот модуль; Мне предоставили стартовый код, в котором это было вверху (я ничего не менял), и это не дало мне этой ошибки. Хотя, очевидно, что код после него другой, но это кажется самой большой проблемой на данный момент.

Полный код выглядит следующим образом:

  • Где находится ваша копия и какой путь включения вы переходите к gcc?
  • Вы можете разместить свой код? Вы используете Makefile из / lib / module?
  • Что ж, мне нужно кое-что сообщить. Во-первых, похоже, что init.h и module.h исчезли. Далее я попытался исправить эту проблему, и все .. как-то пошло не так. Я попытался использовать команду «sudo apt-get install linux-headers-generic», и это дало мне сообщение об ошибке: «E: Пакет ‘linux-headers-generic’ не имеет кандидата на установку».
  • Я не использую Makefile, о котором вы говорите, но он есть в каталоге модуля, который я пытаюсь запустить. Что касается публикации кода, между ними ОЧЕНЬ много заполнителей, которые не очень важны . Я буду работать над его размещением; У меня он работает на виртуальной машине.

Я думаю, вы должны сначала установить что-то вроде linux-headers- [версия ядра] с помощью apt-get, затем вы должны создать Makefile следующим образом:

установите для переменной KERNELDIR в Makefile соответствующую версию ядра, по умолчанию она использует ваше работающее ядро. Если вы используете этот Makefile, вам нужно изменить свой include на следующий формат:

Я думаю, что для разработки модуля ядра лучше использовать стандартное ядро ​​от Linus Torvalds git. Для некоторых простых модулей ядра см. Это.

  • Дело в том, что это для назначения, поэтому нам дали правильный make-файл для загрузки и помещения в правильный каталог (что я и сделал, поскольку он уже работал хотя бы один раз), и я попытался получить заголовки .. . это точный ввод, который мне нужно было ввести в терминал?
  • нет, вы должны сначала использовать , чтобы получить версию ядра, а затем использовать что-то вроде , чтобы получить заголовок ядра для соответствующего выпуска.
  • да, это не сработало. как и в комментариях выше, он не может найти то, что я пытаюсь установить
  • Хорошо, пришлите мне свой результат в комментариях.
  • Это действительно странно, теперь вроде как ни с того ни с сего работает. Я пытался сделать это до сегодняшней встречи с моим профессором, но не смог. Мы открыли его сегодня утром, запустили, конечно, получили кучу ошибок, но это не одна из них. Спасибо, что попробовали!

при сборке модулей ядра вы должны использовать make файлы

Источник

ТОП 10 сообщений об ошибках в Linux

Многие ошибки, которые вы встретите при выполнении команд системы Linux, являются результатом неправильных действий с файлами или процессами. Приведем распространенные сообщения об ошибках и разберем их.

Читайте также:  Windows phone не обновляет whatsapp

No such file or directory
Вероятно, вы пытались получить доступ к несуществующему файлу. Поскольку ввод/вывод в системе Unix не делает различий между файлами и каталогами, это сообщение об ошибке появляется везде. Вы получите его, если попытаетесь выполнить чтение несуществующего файла, или решите перейти в отсутствующий каталог, или попробуете записать файл в несуществующий каталог и так далее.

File exists
В данном случае вы, возможно, пытались создать файл, который уже существует. Это часто бывает, когда вы создаете каталог, имя которого уже занято каким-либо файлом.

Not a directory, Is a directory
Эти сообщения возникают, когда вы пытаетесь использовать файл в качестве каталога или каталог в качестве файла. Например, так:

Обратите внимание на то, что сообщение об ошибке относится только к части a пути a/b. Когда вы столкнетесь с такой проблемой, вам потребуется время, чтобы отыскать компонент пути, с которым обращаются как с каталогом.

No space left on device
На вашем жестком диске закончилось свободное пространство.

Permission denied
Эта ошибка возникает, когда вы пытаетесь выполнить чтение или запись, указав файл или каталог, к которым вам не разрешен доступ (вы обладаете недостаточными правами). Эта ошибка говорит также о том, что вы пытаетесь запустить файл,для которого не установлен бит выполнения (даже если вы можете читать этот файл). Из раздела 2.17 вы больше узнаете о правах доступа.

Operation not permitted
Обычно такая ошибка возникает, когда вы пытаетесь завершить процесс, владельцем которого не являетесь.

Segmentation fault, Bus error
Суть ошибки сегментации состоит в том, что разработчик программы, которую вы только что запустили, где-то ошибся. Программа пыталась получить доступ к области памяти, к которой ей не разрешено обращаться, в результате операционная система завершила работу программы. Подобно ей, ошибка шины означает, что программа пыталась получить доступ к памяти не должным образом. Если вы получаете одну из этих ошибок, то, вероятно, вы передали на ввод программы какие-либо неожиданные для нее данные.

Источник

Ошибка: mkdir — Cannot Create Directory

Новички в Linux часто не понимают, что делать при получении ошибки “mkdir: cannot create directory” во время работы с командной строкой. Есть несколько причин возникновения такой ошибки, и в этом переводе своей англоязычной статьи с сайта Unix Tutorial я покажу эти причины и их устрание на примерах.

mkdir: cannot create directory – File exists

В переводе с английского сообщение означает: невозможно создать каталог — файл уже существует.

ФАЙЛ существует? А при чём тут проблема создания каталога? И почему ошибка говорить “существует файл”, когда мы вообще пытаемся создавать каталог, а не файл?

На самом деле всё просто: большинство объектов в Linux являются файлами и структурами в файловой системе. Поэтому эта ошибка означает, что там, где вы пытаетесь выполнить команду создания нового каталога, уже существует другой объект с таким же именем. В данном случае — это файл, а не каталог. Но у файла такое же имя, как у желаемого каталога, так что создать второй объект с таким же именем не получится.

намекает, что у нас уже есть файл с именем /tmp/try.

Очень просто проверить эту гипотезу с помощью команды ls:

Так и есть, у нас существует файл с таким именем.

Возможные решения проблем mkdir: cannot create directory

Сценарий file exists

Если файл с таким именем уже существует, а каталог всё же очень хочется создать, то есть решения.

Переименовать (или переместить) существующий файл

Используем команду mv для перемещения /tmp/try в другой каталог (или просто сменим имя try на другое, оставив файл в том же каталоге /tmp). Вот как можно переименовать файл в имя oldtry:

Теперь давайте попробуем ту же команду mkdir:

…и всё замечательно работает! Никаких ошибок, и создался новый каталог под названием /tmp/try. Подтверждаем это с помощью команды ls:

Удалить существующий файл

Ещё одна опция, которая напрашивается сама собой — можно просто удалить неугодный файл, который мешает созаднию нашего нового каталога.

Для этого примера создадим новый пустой файл с названием /tmp/newtry

Если попробовать mkdir, то получится ожидаемая ошибка:

А теперь мы просто удалим неугодный файл и попробуем mkdir снова:

В этот раз нет никаких ошибок, всё снова сработало:

Читайте также:  Windows installer service properly registered

##mkdir: cannot create directory – Permission denied

Это — ещё один распространённый сценарий при создании каталогов.

В переводе на русский, сообщение говорит: невозможно создать каталог — недостаточно прав доступа. То есть файлов с таким же именем нет, но текущий пользователь, под которым мы пытаемся создать каталог, не имеет прав в текущем месте файловой системы для создания новых каталогов (и файлов).

Основной подход к такой ошибке — проверка прав доступа в каталоге, где получена ошибка. Команда ls и здесь поможет. You should use ls command on the higher level directory to confirm permissions.

Все эти команды сработали без ошибок, и ls показывает, что у меня есть полные права доступа к каталогу try2018 — rwx для меня, rwx для моей группы и r-x для всех остальных (это я читаю фрагмент drwxrwxr-x в строке с try2018).

Теперь давайте уберём права на запись (и создание новых объектов) в каталоге try2018:

Теперь мои права к этому каталогу сменились с полных (rwx — read/write/execute) на только чтение (r-x — read/execute). Так что если я попробую создать в try2018 какой-то подкаталог, выйдет та самая ошибка про недостаток прав доступа:

Чтобы исправить проблему, нужно исправить права доступа на каталоге, где мы видим ошибку. И пробуем mkdir снова:

Вот теперь — порядок, всё создалось,

На сегодня — всё! Будут ещё вопросы по самым основам Linux — обращайтесь!

Источник

Ошибка Linux при загрузке разделяемых библиотек: невозможно открыть файл общих объектов: нет такого файла или каталога

Программа является частью набора тестов Xenomai, скомпилированного с ПК Linux в Linux + Xenomai ARM toolchain.

Изменить: ОК. Я не заметил, что .1 в конце был частью имени файла. Что это значит в любом случае?

ОТВЕТЫ

Ответ 1

Обновить
Хотя то, что я пишу ниже, верно в качестве общего ответа об общих библиотеках, я думаю, что наиболее частой причиной такого рода сообщений является то, что вы установили пакет, но не установили «-dev версию этого пакета».

Ну, это не вранье — в этом листинге нет libpthread_rt.so.1 . Вам, вероятно, нужно переконфигурировать и перестроить его так, чтобы оно зависело от имеющейся у вас библиотеки, или установить то, что предоставляет libpthread_rt.so.1 .

Как правило, числа после .so являются номерами версий, и вы часто обнаруживаете, что они являются символическими ссылками друг на друга, поэтому, если у вас есть версия 1.1 libfoo.so, у вас будет настоящий файл libfoo.so.1.0, и символические ссылки foo.so и foo.so.1, указывающие на libfoo.so.1.0. И если вы установите версию 1.1, не удаляя другую, у вас будет libfoo.so.1.1, а libfoo.so.1 и libfoo.so теперь будут указывать на новую, но любой код, для которого требуется эта точная версия, может используйте файл libfoo.so.1.0. Код, который опирается только на API версии 1, но не заботится, будет ли он 1.0 или 1.1, указывать libfoo.so.1. Как отметил Орип в комментариях, это хорошо объясняется на http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html.

В вашем случае, вы можете сойти с символической ссылки libpthread_rt.so.1 на libpthread_rt.so . Однако нет никаких гарантий, что это не нарушит ваш код и не поужинает на телевидении.

Ответ 2

Ваша библиотека является динамической библиотекой. Вы должны сообщить операционной системе, где она может найти его во время выполнения.

Для этого нам понадобятся следующие простые шаги:

(1) Найдите, где находится библиотека, если вы ее не знаете.

(2) Проверьте наличие переменной среды пути динамической библиотеки ( LD_LIBRARY_PATH )

если нечего отображать, добавьте значение пути по умолчанию (или нет, если хотите)

(3) Мы добавляем желаемый путь, экспортируем его и пробуем приложение.

Обратите внимание, что путь должен быть каталогом, в котором находится path.so.something . Так что если path.so.something находится в /my_library/path.so.something он должен быть:

Ответ 3

Вот несколько решений, которые вы можете попробовать:

LDCONFIG

Как отметил AbiusX: если вы только что установили библиотеку, вам просто нужно запустить ldconfig.

ldconfig создает необходимые ссылки и кеширует самые последние общие библиотеки, найденные в каталогах, указанных в команде line в файле /etc/ld.so.conf и в доверенных каталогах (/lib и /usr/lib ).

Обычно ваш менеджер пакетов позаботится об этом при установке новой библиотеки, но не всегда, и это не помешает запустить ldconfig, даже если это не ваша проблема.

Dev-пакет или неправильная версия

Если это не сработает, я также рассмотрю предложение Paul и поискать версию библиотеки «-dev». Многие библиотеки разделены на dev и non-dev пакеты. Вы можете использовать эту команду для поиска:

Читайте также:  Adobe flash player для всех версий windows

Это также может помочь, если у вас установлена ​​неправильная версия установленной библиотеки. Некоторые библиотеки публикуются в разных версиях одновременно, например, Python.

Местоположение библиотеки

Если вы уверены, что установлен правильный пакет, а ldconfig его не нашел, он может быть просто нестандартным. По умолчанию ldconfig выглядит в /lib , /usr/lib и каталогах, перечисленных в /etc/ld.so.conf и $LD_LIBRARY_PATH . Если ваша библиотека находится где-то в другом месте, вы можете добавить каталог в свою строку в /etc/ld.so.conf , добавить путь библиотеки к $LD_LIBRARY_PATH или переместить библиотеку в /usr/lib . Затем запустите ldconfig .

Чтобы узнать, где находится библиотека, попробуйте следующее:

(Замените libraryname на имя вашей библиотеки)

Если вы перейдете по маршруту $LD_LIBRARY_PATH , вы захотите поместить его в свой файл

/.bashrc , чтобы он запускался каждый раз при входе в систему:

Ответ 4

У меня была аналогичная ошибка, я мог бы разрешить ее, указав

Надеюсь, это поможет.

Ответ 5

Вам необходимо убедиться, что вы указали путь к библиотеке во время связывание при компиляции вашего .c файла:

gcc -I/usr/local/include xxx.c -o xxx -L/usr/local/lib -Wl, -R/USR/локальные/Библиотека

Часть -Wl, -R сообщает полученному двоичному файлу также искать библиотеку в /usr/local/lib во время выполнения, прежде чем пытаться использовать его в /usr/lib/

Надеюсь, это поможет вам.

Ответ 6

Страница ссылки linux.org объясняет механику, но не объясняет мотивацию: — (

Кроме того, обратите внимание, что «внешнее управление версиями» в значительной степени устарело в Linux, поскольку управление версиями символов (расширение GNU) позволяет вам иметь несколько несовместимых версий одной и той же функции в одной библиотеке. Это расширение позволило glibc иметь ту же внешнюю версию: libc.so.6 за последние 10 лет.

Ответ 7

Попробуйте добавить LD_LIBRARY_PATH , который указывает пути поиска, в ваш файл

Ответ 8

добавить эти строки в конец

Ответ 9

Другое возможное решение в зависимости от вашей ситуации.

Если вы знаете, что libpthread_rt.so.1 совпадает с libpthread_rt.so, вы можете создать символическую ссылку:

Затем ls -l /lib должен теперь показать символическую ссылку и то, на что она указывает.

Ответ 10

У меня была эта ошибка при запуске моего приложения с Eclipse CDT в Linux x86.
Чтобы исправить это:

Выполнить как → Выполнить настройки → Среда

Ответ 11

У меня была похожая ошибка, и она не устранилась с выдачей LD_LIBRARY_PATH в

/.bashrc. Что решило мою проблему, добавив файл .conf и загрузив его. Перейти к терминалу и быть в Су.

Добавьте путь к вашей библиотеке в этом файле и сохраните его (например,/usr/local/lib). Вы должны выполнить следующую команду, чтобы активировать путь:

Проверьте ваш новый путь к библиотеке:

Если это показывает ваши файлы библиотеки, то вы готовы.

Ответ 12

попробуйте установить sudo lib32z1

Ответ 13

Все, что мне нужно было сделать, было запущено:

Я был в папке, расположенной в /usr/lib/x86_64-linux-gnu , и работал отлично.

Ответ 14

Если вы запускаете приложение в Microsoft Windows, путь к динамическим библиотекам (DLL) должен быть определен в переменной среды PATH.

Если вы запускаете приложение в UNIX, путь к динамическим библиотекам (.so) должен быть определен в переменной среды LD_LIBRARY_PATH.

Ответ 15

Произошла ошибка, поскольку система не может сослаться на упомянутый файл библиотеки. Сделайте следующие шаги:

  1. При запуске locate libpthread_rt.so.1 будет locate libpthread_rt.so.1 путь ко всем файлам с этим именем. Предположим, что путь это /home/user/loc .
  2. Скопируйте путь и запустите cd home/USERNAME . Замените USERNAME на имя текущего активного пользователя, с которым вы хотите запустить файл.
  3. Запустите vi.bash_profile и в конце параметра LD_LIBRARY_PATH , прямо перед . , добавьте строку /lib://home/usr/loc:. , Сохраните файл.
  4. Закройте терминал и перезапустите приложение. Это должно бежать.

Ответ 16

Я получил эту ошибку, и я думаю, что это та же самая причина, по которой вы

Попробуй это. Исправьте права на файлы:

«sudo su», чтобы получить разрешения для вашей файловой системы.

Ответ 17

Я получил эту ошибку, и я думаю, что это та же самая причина, по которой вы

ошибка при загрузке общих библиотек: libnw.so: невозможно открыть файл общего объекта: такого файла или каталога нет

Попробуй это. Исправьте права на файлы:

Ответ 18

похожая проблема найдена здесь: https://bugzilla.redhat.com/show_bug.cgi?id=1456202 Я пробовал упомянутое решение, и оно на самом деле работает.

Решения в предыдущих вопросах могут работать. Но я думаю, что это простой способ исправить это. Попробуйте переустановить пакет libwbclient в fedora:

Источник

Оцените статью
Adblock
detector