Вероятно, проблема не связана с разрешениями (по крайней мере, на стороне Linux). После того, как получатель загрузит вложение, владельцем файла станет он. Так что все, что они извлекают из этого zip-файла.
Я подозреваю, что проблема одна из следующих:
Попросите получателя скачать вложение на свой рабочий стол. Щелкните правой кнопкой мыши по zip-файлу, перейдите к свойствам и посмотрите внизу на предупреждение системы безопасности («Этот файл был получен с другого компьютера и может быть заблокирован ...»). Если они это увидят, попросите их нажать «Разблокировать», а затем открыть zip-файл. Скопируйте сжатый файл latex_for_jane на свой рабочий стол. Откройте его и посмотрите, могут ли они теперь редактировать файл.
Кроме того, вы можете захотеть добавить расширение к этому исходному файлу («latex_for_jane.txt» или «latex_for_jane.tex»). Это избавит вашего Windows-соотечественника от неприятностей.
Я нашел это руководство на OpenWRT.org , которое помогло мне научиться устанавливать инструменты сборки, и я просто изменил инструкции, чтобы они соответствовали моей версии OpenWRT.
Я проверил git commit 70255e3d624cd393612069aae0a859d1acbbeeae (тег :v18.06.1)и установил настройки:
system "Broadcom BCM63xx"
subtarget "generic"
profile "Sagem F@ST2704N"
Я также установил для переменной среды PATH значение path/to/project/source/staging_dir/toolchain-mips_mips32_gcc-7.3.0_musl/bin
и выполнил команду mips-openwrt-linux-gcc hello.c -o hello
.
Я должен упомянуть, что мне пришлось установить gnu -getopt и gnu -time, потому что я компилирую на OSX.
Кроме того, в качестве дополнительного бонуса, когда я тестировал компиляцию существующей программы, такой как BusyBox, я смог скомпилировать BusyBox с помощью команды LDFLAGS="--static" make CROSS_COMPILE="mips-openwrt-linux-"
.
Редактировать:
Для тех, кто интересуется, почему файлы ELF имеют интерпретаторы, интерпретатор необходим для настройки среды перед загрузкой программы. Цитата взята из сообщения в блоге Кристиан Айхингер, мысли из раздела «Загрузка программы в ядре».
«Статически связанные двоичные файлы могут обходиться без интерпретатора;динамически компонуемые программы всегда нуждаются в /lib/ld -linux.so в качестве интерпретатора, потому что он включает в себя некоторый код запуска, загружает общие библиотеки, необходимые для двоичного файла, и выполняет перемещение."
Я подозреваю, что причина, по которой моя программа продолжала говорить «Убито» (в оригинальной прошивке Sagemcom ), даже когда я связывал ее статически, заключается в том, что маршрутизатор мог быть разработан для того, чтобы сбить с толку пользователя, пытающегося запустить программа для предотвращения несанкционированного выполнения. Я выяснил, как скомпилировать uClibc и заставить его работать на исходной прошивке и отдельном устройстве Sagemcom (, не имеющем отношения к тому, о котором спрашивалось в этом вопросе ).