Синтаксическая ошибка: "(" неожиданно при выполнении скомпилированной c-программы

Я новичок в linux / script / command / etc …

Я пытаюсь выполнить программу c двоичного файла c в оболочке (эта программа была скомпилирована на другом компьютере:

  • Как отключить часть экрана в X.Org
  • Как узнать, как совпадают матчи соответствия fc?
  • SUID случайно удален из файла / bin / su
  • Может ли написать stdout место противодавления в процессе?
  • lsof: домашняя папка занята, но я никогда не вошел в систему как этот пользователь
  • Как сортировать в первом столбце каждые 4 строки в файле с ключом во втором столбце
  • gcc acqv170104.c -o acqv `mysql_config --cflags --libs` 

    в командной строке:

     $ sudo ./acqv paramA paramB paramC 

    и я получил это сообщение

     acqv: 1: acqv: Syntax error: "(" unexpected 

    Я проверил привилегии скрипта

     -rwxrwxrwx 1 root root 20472 Jan 10 14:20 acqv 

    Нужно ли мне иметь специальную библиотеку для ее выполнения?

  • Linux, отключить / dev / fd0 (гибкий диск)
  • Где технически хранятся данные ACL?
  • Соединение VSFTPD отказано CentOS 6
  • Как заблокировать растущий каталог в памяти?
  • Fingerprint-GUI работает только как root?
  • Найти, на какие файлы влияют плохие блоки на файловой системе ext4
  • One Solution collect form web for “Синтаксическая ошибка: "(" неожиданно при выполнении скомпилированной c-программы”

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

    Сообщение «Синтаксическая ошибка:» («неожиданно», очевидно, происходит из оболочки. Почему оболочка пытается выполнить ваш двоичный файл? Потому что ядро ​​пыталось и сдавалось. Когда это происходит, sudo решает, что это может быть сценарий оболочки, правильный заголовок и пытается вызвать оболочку по своему выбору (sudo пытается запустить sh ).

    Почему ядро ​​не запускало программу? Поскольку исполняемый файл не поддерживается в поддерживаемом формате. Это не просто из-за компиляции неправильной архитектуры (например, попытка запустить 64-разрядный двоичный код x86 в 32-разрядной системе или наоборот) или для неправильной операционной системы (например, попытка запустить исполняемый файл FreeBSD на Linux): ядро ​​не распознает файл как находящийся в исполняемом формате вообще. Например, если вы попытались запустить это в Linux, то это означает, что у вас нет бинарных файлов ELF . Среди обычных операционных систем попытка запустить двоичный файл macOS для Linux или наоборот приведет к этому.

    Обратите внимание, что проблема связана не с плохими разрешениями или отсутствием библиотек. Если любая из этих проблем была проблемой, ядро ​​сообщило бы о другой ошибке, и sudo не попытается запустить оболочку вместо этого.

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

    Linux и Unix - лучшая ОС в мире.