Я пишу код сборки, который можно скомпилировать:
as power.s -o power.o
возникает проблема, когда я связываю файл объекта power.o:
ld power.o -o power
Чтобы работать на 64-битной ОС (Ubuntu 14.04), я добавил .code32
в начале файла power.s
, но все равно получаю ошибку:
Ошибка сегментации (сброс ядра)
power.s
:
.code32
.section .data
.section .text
.global _start
_start:
pushl $3
pushl $2
call power
addl $8, %esp
pushl %eax
pushl $2
pushl $5
call power
addl $8, %esp
popl %ebx
addl %eax, %ebx
movl $1, %eax
int $0x80
.type power, @function
power:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
movl 8(%ebp), %ebx
movl 12(%ebp), %ecx
movl %ebx, -4(%ebp)
power_loop_start:
cmpl $1, %ecx
je end_power
movl -4(%ebp), %eax
imull %ebx, %eax
movl %eax, -4(%ebp)
decl %ecx
jmp power_loop_start
end_power:
movl -4(%ebp), %eax
movl %ebp, %esp
popl %ebp
ret
Ответ 1
TL: DR: используйте gcc -m32
.
.code32
не изменяет формат выходного файла, а также то, что определяет режим, в котором будет работать ваша программа. Вам не нужно запускать 32-битный код в режиме 64 бит. .code32
предназначен для сборки «чужого» машинного кода, который может потребоваться в качестве данных, или для экспорта в сегменте общей памяти. Если это не то, что вы делаете, избегайте этого, чтобы получить ошибки времени сборки при построении .S
в неправильном режиме, если у него есть какие-либо инструкции push
или pop
, например.
Предложение: используйте расширение .S
для рукописного ассемблера. (gcc foo.S
будет запускаться через препроцессор C до as
, поэтому вы можете #include
заголовок с номерами системного вызова, например). Кроме того, он отличает его от .S
вывода компилятора (от gcc foo.c -O3 -S
).
gcc -g foo.S -o foo -m32 -nostdlib -static # static binary with absolutely no libraries or startup code
# -nostdlib by itself makes static executables on Linux, but not OS X.
gcc -g foo.S -o foo -m32 # dynamic binary including the startup boilerplate code. Use with code that defines a main() but not a _start
Документация для nostdlib
, -nostartfiles
и -static
.
Использование функций libc из _start
(см. конец этого ответа для примера)
Некоторые функции, такие как malloc(3)
или stdio-функции, включая printf(3)
, зависят от инициализации некоторых глобальных данных (например, FILE *stdout
и объекта, на который он фактически указывает).
gcc -nostartfiles
не содержит код шаблона CRT _start
, но все же связывает libc
(динамически, по умолчанию). В Linux общие библиотеки могут иметь разделы инициализатора, которые запускаются динамическим компоновщиком, когда он загружает их, прежде чем переходить к вашей точке входа _start
. Так что gcc -nostartfiles hello.S
по-прежнему позволяет вам звонить printf
. Для динамического исполняемого файла ядро запускает /lib/ld-linux.so.2
вместо его непосредственного использования (используйте readelf -a
, чтобы увидеть строку «ELF интерпретатор» в вашем двоичном файле). Когда ваш _start
в конечном итоге будет запущен, не все регистры будут обнулены, потому что динамический компоновщик выполнил код в вашем процессе.
Однако gcc -nostartfiles -static hello.S
свяжется, но сбой во время выполнения, если вы вызываете printf
или что-то, не вызывая внутренние функции init glibc. (см. комментарий Майкла Пётча).
Конечно, вы можете поместить любую комбинацию файлов .c
, .S
и .o
в одну и ту же командную строку, чтобы связать их все в один исполняемый файл. Если у вас есть C, не забудьте -Og -Wall -Wextra
: вы не хотите отлаживать ваш asm, когда проблема была чем-то простым в C, который вызывает это, о котором компилятор мог предупредить вас.
Используйте -v
, чтобы gcc показывал вам команды, которые он запускает для сборки и соединения. Сделать это «вручную» :
as foo.S -o foo.o -g --32 && # skips the preprocessor
ld -o foo foo.o -m elf_i386
file foo
foo: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
gcc -nostdlib -m32
легче запомнить и напечатать, чем два разных варианта для as и ld (--32
и -m elf_i386
). Кроме того, он работает на всех платформах, включая те, где исполняемый формат не является ELF. ( Но примеры Linux не будут работать в OS X, потому что номера системных вызовов отличаются или в Windows, потому что они даже не используют int 0x80
ABI.)
NASM/Yasm
gcc не может обрабатывать синтаксис NASM. (-masm=intel
больше похож на MASM, чем на синтаксис NASM, где вам нужно offset symbol
, чтобы получить адрес сразу). И, конечно, директивы различны (например, .globl
vs global
).
Вы можете построить с помощью nasm
или yasm
, затем свяжите .o
с gcc
, как указано выше, или ld
напрямую.
Я использую оболочку script, чтобы избежать повторного ввода одного и того же имени файла с тремя разными расширениями. (nasm и yasm по умолчанию — file.asm
→ file.o
, в отличие от GNU в качестве вывода по умолчанию a.out
). Используйте это с помощью -m32
, чтобы собрать и связать 32-разрядные исполняемые файлы ELF. Не все ОС используют ELF, поэтому этот script менее переносимый, чем использование gcc -nostdlib -m32
для ссылки будет..
#!/bin/sh
# usage: asm-link [-q] [-m32] foo.asm [assembler options ...]
# Just use a Makefile for anything non-trivial. This script is intentionally minimal and doesn't handle multiple source files
verbose=1 # defaults
fmt=-felf64
#ldopt=-melf_i386
while getopts 'm:vq' opt; do
case "$opt" in
m) if [ "m$OPTARG" = "m32" ]; then
fmt=-felf32
ldopt=-melf_i386
fi
if [ "m$OPTARG" = "mx32" ]; then
fmt=-felfx32
ldopt=-melf32_x86_64
fi
# default is -m64
;;
q) verbose=0 ;;
v) verbose=1 ;;
esac
done
shift "$((OPTIND-1))" # Shift off the options and optional --
src=$1
base=${src%.*}
shift
[ "$verbose" = 1 ] && set -x # print commands as they're run, like make
#yasm "$fmt" -Worphan-labels -gdwarf2 "$src" "[email protected]" &&
nasm "$fmt" -Worphan-labels -g -Fdwarf "$src" "[email protected]" &&
ld $ldopt -o "$base" "$base.o"
# yasm -gdwarf2 includes even .local labels so they show up in objdump output
# nasm defaults to that behaviour of including even .local labels
# nasm defaults to STABS debugging format, but -g is not the default
Я предпочитаю yasm по нескольким причинам, в том числе по умолчанию для создания long- nop
вместо заполнения со многими однобайтовыми nop
s. Это приводит к беспорядочному выводу разборки, а также к замедлению, если nops когда-либо выполняются. (В NASM вам нужно использовать макрос smartalign
.)
Пример: программа, использующая функции libc из _start
# hello32.S
#include <asm/unistd_32.h> // syscall numbers. only #defines, no C declarations left after CPP to cause asm syntax errors
.text
#.global main # uncomment these to let this code work as _start, or as main called by glibc _start
#main:
#.weak _start
.global _start
_start:
mov $__NR_gettimeofday, %eax # make a syscall that we can see in strace output so we know when we get here
int $0x80
push %esp
push $print_fmt
call printf
#xor %ebx,%ebx # _exit(0)
#mov $__NR_exit_group, %eax # same as glibc _exit(2) wrapper
#int $0x80 # won't flush the stdio buffer
movl $0, (%esp) # reuse the stack slots we set up for printf, instead of popping
call exit # exit(3) does an fflush and other cleanup
#add $8, %esp # pop the space reserved by the two pushes
#ret # only works in main, not _start
.section .rodata
print_fmt: .asciz "Hello, World!n%%esp at startup = %#lxn"
$ gcc -m32 -nostdlib hello32.S
/tmp/ccHNGx24.o: In function `_start':
(.text+0x7): undefined reference to `printf'
...
$ gcc -m32 hello32.S
/tmp/ccQ4SOR8.o: In function `_start':
(.text+0x0): multiple definition of `_start'
...
Сбой во время выполнения, потому что ничего не вызывает функции init glibc. (__libc_init_first
, __dl_tls_setup
и __libc_csu_init
в этом порядке, в соответствии с комментарием Михаила Петча. Существуют и другие реализации libc
, включая MUSL, который предназначен для статической компоновки и работает без вызовов инициализации.)
$ gcc -m32 -nostartfiles -static hello32.S # fails at run-time
$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, BuildID[sha1]=ef4b74b1c29618d89ad60dbc6f9517d7cdec3236, not stripped
$ strace -s128 ./a.out
execve("./a.out", ["./a.out"], [/* 70 vars */]) = 0
[ Process PID=29681 runs in 32 bit mode. ]
gettimeofday(NULL, NULL) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=0} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)
Вы также можете gdb ./a.out
и запустите b _start
, layout reg
, run
и посмотрите, что произойдет.
$ gcc -m32 -nostartfiles hello32.S # Correct command line
$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=7b0a731f9b24a77bee41c13ec562ba2a459d91c7, not stripped
$ ./a.out
Hello, World!
%esp at startup = 0xffdf7460
$ ltrace -s128 ./a.out > /dev/null
printf("Hello, World!n%%esp at startup = %#lxn", 0xff937510) = 43 # note the different address: Address-space layout randomization at work
exit(0 <no return ...>
+++ exited (status 0) +++
$ strace -s128 ./a.out > /dev/null # redirect stdout so we don't see a mix of normal output and trace output
execve("./a.out", ["./a.out"], [/* 70 vars */]) = 0
[ Process PID=29729 runs in 32 bit mode. ]
brk(0) = 0x834e000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
.... more syscalls from dynamic linker code
open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
mmap2(NULL, 1814236, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff7556000 # map the executable text section of the library
... more stuff
# end of dynamic linker code, finally jumps to our _start
gettimeofday({1461874556, 431117}, NULL) = 0
fstat64(1, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0 # stdio is figuring out whether stdout is a terminal or not
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0xff938870) = -1 ENOTTY (Inappropriate ioctl for device)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7743000 # 4k buffer for stdout
write(1, "Hello, World!n%esp at startup = 0xff938fb0n", 43) = 43
exit_group(0) = ?
+++ exited with 0 +++
Если бы мы использовали _exit(0)
или сделали систему sys_exit
себя с int 0x80
, write(2)
не произошло бы. Если stdout перенаправлен на не-tty, по умолчанию он заполняется с полным буфером (не с буферизацией строки), поэтому write(2)
запускается только fflush(3)
как часть exit(3)
. Без перенаправления вызов printf(3)
со строкой, содержащей символы новой строки, немедленно будет скрыт.
Поведение по-разному в зависимости от того, является ли stdout терминалом, может быть желательным, но только если вы делаете это специально, а не по ошибке.
Привет, я пытаюсь скомпилировать простые программы C на своем компьютере, и я получаю аналогичные сообщения из-под терминала [см. изображения] при компиляции с указанием какой-то ошибки сборки. Я не знаю, является ли это проблемой памяти/стека компьютера (хотя я перезагрузил свой компьютер) или чем-то еще, но что я знаю точно, так это то, что в последние дни я компилировал программы на C таким же образом.
Код:
#include <stdio.h>
main(){
printf("hello");
}
Выход:
/tmp/cconajAc.s: сообщения ассемблера: /tmp/cconajAc.s:9: ошибка: суффикс или операнд недействителен для `push’
Подскажите пожалуйста как это исправить!
ОТРЕДАКТИРОВАНО: я только что перешел с рабочей станции из другой компьютерной лаборатории, и она работает нормально, без каких-либо ошибок при сборке. Я предполагаю, что это ошибка инструментов разработки, установленных на тех компьютерах в другой лаборатории. Думаю, на данный момент это работает для меня, хотя было бы интересно узнать источник проблемы, которая возникла у меня на другом компьютере.
5 ответов
Ошибка кажется странной, но попробуйте добавить тип возвращаемого значения к вашему main()
: int main()
.
1
SomeWittyUsername
5 Ноя 2012 в 02:21
Напишите в редакторе vi и сохраните файл как «hello.c»:
#include <stdio.h>
int main() { printf("hello"); return 0; }
Проверьте, установлены ли у вас 32-разрядные заголовки glibc.
Попробуйте установить это в Ubuntu:
# apt-get install gcc-multilib
Тогда попробуйте:
# gcc -m32 -o hello hello.c
# gcc Wa,--32
еще
# gcc -m32 --32
1
askmish
5 Ноя 2012 в 02:48
В случае, если это поможет кому-то еще, для меня это, по-видимому, вызвано несоответствием компонентов цепочки инструментов — мне иногда приходится использовать внешние точечные файлы, которые изменяют мой PATH
(чтобы удовлетворить запутанную систему сборки, вздох). Ассемблер был /usr/bin/as
, но gcc
был какой-то древней версией.
0
jjlin
20 Авг 2014 в 04:29
Ошибка: суффикс или операнды недействительны для `push’
Проверьте архитектуру вашей системы:
# arch
x86_64
# arch
i386
Или используйте это:
#uname -m
x86_64
В сборке: 32bit(i386):
pushl instruction ;notice the suffix is l
64-битный (x86_64):
pushq instruction ;notice the suffix is q
Интересно, ваша системная арка — x86_64, она вызовет эту ошибку, когда вы используете 32-битную инструкцию. Для решения этой проблемы:
#gcc -m32 -o test test.c
См. Когда следует использовать параметр -m32 для gcc?
0
Community
23 Май 2017 в 14:48
В какой оболочке вы работаете при запуске gcc?
Попробуйте переключиться на tcsh/csh. я получил ту же ошибку в bash и переключил оболочку на tcsh.
0
aks
21 Ноя 2014 в 05:04
Последнее обновление: 08/17/2022
[Необходимое время для чтения: ~4–6 мин.]
Файлы TMP, такие как wct4C32.tmp, классифицируются как файлы Резервное копирование (General Temporary). Как файл General Temporary он был создан для использования в CoffeeCup HTML Editor 15.4 build 801 от компании CoffeeCup Software.
Первая версия wct4C32.tmp для CoffeeCup HTML Editor 15.4 build 801 увидела свет 06/07/2017 в Windows 10.
Это не только самый последний выпуск от компании CoffeeCup Software, но и, насколько известно, единственная существующая версия.
В этой статье обсуждаются подробные сведения о файлах, порядок устранения неполадок с файлом TMP при проблемах с wct4C32.tmp, а также полный набор бесплатных загрузок для каждой версии файла, которая была зарегистрирована нашей командой.
Что такое сообщения об ошибках wct4C32.tmp?
Общие ошибки выполнения wct4C32.tmp
Ошибки файла wct4C32.tmp часто возникают на этапе запуска CoffeeCup HTML Editor, но также могут возникать во время работы программы.
Эти типы ошибок TMP также известны как «ошибки выполнения», поскольку они возникают во время выполнения CoffeeCup HTML Editor. К числу наиболее распространенных ошибок выполнения wct4C32.tmp относятся:
- Не удается найти wct4C32.tmp.
- wct4C32.tmp — ошибка.
- Не удалось загрузить wct4C32.tmp.
- Ошибка при загрузке wct4C32.tmp.
- Не удалось зарегистрировать wct4C32.tmp / Не удается зарегистрировать wct4C32.tmp.
- Ошибка выполнения — wct4C32.tmp.
- Файл wct4C32.tmp отсутствует или поврежден.
Библиотека времени выполнения Microsoft Visual C++
Ошибка выполнения!
Программа: C:UsersTesterAppDataLocalTempwct4C32.tmp
Среда выполнения получила запрос от этого приложения, чтобы прекратить его необычным способом.
Для получения дополнительной информации обратитесь в службу поддержки приложения.
В большинстве случаев причинами ошибок в TMP являются отсутствующие или поврежденные файлы. Файл wct4C32.tmp может отсутствовать из-за случайного удаления, быть удаленным другой программой как общий файл (общий с CoffeeCup HTML Editor) или быть удаленным в результате заражения вредоносным программным обеспечением. Кроме того, повреждение файла wct4C32.tmp может быть вызвано отключением питания при загрузке CoffeeCup HTML Editor, сбоем системы при загрузке или сохранении wct4C32.tmp, наличием плохих секторов на запоминающем устройстве (обычно это основной жесткий диск) или заражением вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.
Как исправить ошибки wct4C32.tmp — 3-шаговое руководство (время выполнения: ~5-15 мин.)
Если вы столкнулись с одним из вышеуказанных сообщений об ошибке, выполните следующие действия по устранению неполадок, чтобы решить проблему wct4C32.tmp. Эти шаги по устранению неполадок перечислены в рекомендуемом порядке выполнения.
Шаг 1. Восстановите компьютер до последней точки восстановления, «моментального снимка» или образа резервной копии, которые предшествуют появлению ошибки.
Чтобы начать восстановление системы (Windows XP, Vista, 7, 8 и 10):
- Нажмите кнопку «Пуск» в Windows
- В поле поиска введите «Восстановление системы» и нажмите ENTER.
- В результатах поиска найдите и нажмите «Восстановление системы»
- Введите пароль администратора (при необходимости).
- Следуйте инструкциям мастера восстановления системы, чтобы выбрать соответствующую точку восстановления.
- Восстановите компьютер к этому образу резервной копии.
Если на этапе 1 не удается устранить ошибку wct4C32.tmp, перейдите к шагу 2 ниже.
Шаг 2. Если вы недавно установили приложение CoffeeCup HTML Editor (или схожее программное обеспечение), удалите его, затем попробуйте переустановить CoffeeCup HTML Editor.
Чтобы удалить программное обеспечение CoffeeCup HTML Editor, выполните следующие инструкции (Windows XP, Vista, 7, 8 и 10):
- Нажмите кнопку «Пуск» в Windows
- В поле поиска введите «Удалить» и нажмите ENTER.
- В результатах поиска найдите и нажмите «Установка и удаление программ»
- Найдите запись для CoffeeCup HTML Editor 15.4 build 801 и нажмите «Удалить»
- Следуйте указаниям по удалению.
После полного удаления приложения следует перезагрузить ПК и заново установить CoffeeCup HTML Editor.
Если на этапе 2 также не удается устранить ошибку wct4C32.tmp, перейдите к шагу 3 ниже.
CoffeeCup HTML Editor 15.4 build 801
CoffeeCup Software
Шаг 3. Выполните обновление Windows.
Когда первые два шага не устранили проблему, целесообразно запустить Центр обновления Windows. Во многих случаях возникновение сообщений об ошибках wct4C32.tmp может быть вызвано устаревшей операционной системой Windows. Чтобы запустить Центр обновления Windows, выполните следующие простые шаги:
- Нажмите кнопку «Пуск» в Windows
- В поле поиска введите «Обновить» и нажмите ENTER.
- В диалоговом окне Центра обновления Windows нажмите «Проверить наличие обновлений» (или аналогичную кнопку в зависимости от версии Windows)
- Если обновления доступны для загрузки, нажмите «Установить обновления».
- После завершения обновления следует перезагрузить ПК.
Если Центр обновления Windows не смог устранить сообщение об ошибке wct4C32.tmp, перейдите к следующему шагу. Обратите внимание, что этот последний шаг рекомендуется только для продвинутых пользователей ПК.
Если эти шаги не принесут результата: скачайте и замените файл wct4C32.tmp (внимание: для опытных пользователей)
Если ни один из предыдущих трех шагов по устранению неполадок не разрешил проблему, можно попробовать более агрессивный подход (примечание: не рекомендуется пользователям ПК начального уровня), загрузив и заменив соответствующую версию файла wct4C32.tmp. Мы храним полную базу данных файлов wct4C32.tmp со 100%-ной гарантией отсутствия вредоносного программного обеспечения для любой применимой версии CoffeeCup HTML Editor . Чтобы загрузить и правильно заменить файл, выполните следующие действия:
- Найдите версию операционной системы Windows в нижеприведенном списке «Загрузить файлы wct4C32.tmp».
- Нажмите соответствующую кнопку «Скачать», чтобы скачать версию файла Windows.
- Скопируйте этот файл в соответствующее расположение папки CoffeeCup HTML Editor:
Windows 10: C:UsersTesterAppDataLocalTemp
- Перезагрузите компьютер.
Если этот последний шаг оказался безрезультативным и ошибка по-прежнему не устранена, единственно возможным вариантом остается выполнение чистой установки Windows 10.
СОВЕТ ОТ СПЕЦИАЛИСТА: Мы должны подчеркнуть, что переустановка Windows является достаточно длительной и сложной задачей для решения проблем, связанных с wct4C32.tmp. Во избежание потери данных следует убедиться, что перед началом процесса вы создали резервные копии всех важных документов, изображений, установщиков программного обеспечения и других персональных данных. Если вы в настоящее время не создаете резервных копий своих данных, вам необходимо сделать это немедленно.
Скачать файлы wct4C32.tmp (проверено на наличие вредоносного ПО — отсутствие 100 %)
ВНИМАНИЕ! Мы настоятельно не рекомендуем загружать и копировать wct4C32.tmp в соответствующий системный каталог Windows. CoffeeCup Software, как правило, не выпускает файлы CoffeeCup HTML Editor TMP для загрузки, поскольку они входят в состав установщика программного обеспечения. Задача установщика заключается в том, чтобы обеспечить выполнение всех надлежащих проверок перед установкой и размещением wct4C32.tmp и всех других файлов TMP для CoffeeCup HTML Editor. Неправильно установленный файл TMP может нарушить стабильность работы системы и привести к тому, что программа или операционная система полностью перестанут работать. Действовать с осторожностью.
Файлы, относящиеся к wct4C32.tmp
Файлы TMP, относящиеся к wct4C32.tmp
Имя файла | Описание | Программа (версия) | Размер файла (байты) | Расположение файла |
---|---|---|---|---|
_s_206E.tmp | General Temporary | CoffeeCup HTML Editor 15.4 build 801 | 105420 | C:WindowsPantherNewOsPanther |
wct2D11.tmp | Microsoft OneDrive (32 bit) Setup | Microsoft OneDrive (19.152.0927.0012) | 35077976 | C:UsersTesterAppDataLocalTemp |
wct4C32.tmp | General Temporary | CoffeeCup HTML Editor 15.4 build 801 | 21134 | C:UsersTesterAppDataLocalTemp |
Другие файлы, связанные с wct4C32.tmp
Имя файла | Описание | Программа (версия) | Размер файла (байты) | Расположение файла |
---|---|---|---|---|
setuperr.log | Log | CoffeeCup HTML Editor 15.4 build 801 | 524 | C:$WINDOWS.~BTSourcesPanther |
setuperr.log | Log | CoffeeCup HTML Editor 15.4 build 801 | 23563 | C:WindowsLogsDPX |
symbol.ttf | TrueType Font | CoffeeCup HTML Editor 15.4 build 801 | 70128 | C:Program FilesWindowsAppsMicrosoft.Office.O… |
WmiApRpl.ini | Windows Initialization | CoffeeCup HTML Editor 15.4 build 801 | 29736 | C:WindowsinfWmiApRpl009 |
api-ms-win-core-profil… | ApiSet Stub DLL | Microsoft® Windows® Operating System (10.0.17134.12) | 17776 | C:UsersTesterAppDataLocalMicrosoftOneDriv… |
Вы скачиваете пробное программное обеспечение. Для разблокировки всех функций программного обеспечения требуется покупка годичной подписки, стоимость которой оставляет 39,95 долл. США. Подписка автоматически возобновляется в конце срока (Подробнее). Нажимая кнопку «Начать загрузку» и устанавливая «Программное обеспечение», я подтверждаю, что я прочитал (-а) и принимаю Лицензионное соглашение и Политику конфиденциальности компании Solvusoft.
Как правило, такие TMP ошибки возникают из-за повреждённых или отсутствующих файлов be32.tmp, а иногда — в результате заражения вредоносным ПО в настоящем или прошлом, что оказало влияние на Flash Player Helper. Как правило, любую проблему, связанную с файлом TMP, можно решить посредством замены файла на новую копию. Мы также рекомендуем выполнить сканирование реестра, чтобы очистить все недействительные ссылки на be32.tmp, которые могут являться причиной ошибки.
Ниже представлена наша база версий файлов be32.tmp для большинства выпусков операционной системы Windows (включая %%os%%), где вы также можете их скачать. Для скачивания доступны не все версии be32.tmp, однако вы можете запросить необходимых файл, нажав на кнопку Request (Запрос) ниже. В редких случаях, если вы не можете найти версию необходимого вам файла ниже, мы рекомендуем вам обратиться за дополнительной помощью к Adobe Systems Incorporated.
Если вы успешно заменили соответствующий файл в соответствующем месте, у вас больше не должно возникать проблем, связанных с be32.tmp. Однако мы рекомендуем выполнить быструю проверку, чтобы окончательно в этом убедиться. Затем вы можете повторно открыть Flash Player Helper, чтобы проверить выводится ли сообщение об ошибке.
Be32.tmp Описание файла | |
---|---|
Тип: | TMP |
Функция: | Adobe Flash Player Helper 10.1 r85 |
Новейшие программы: | Flash Player Helper |
Версия выпуска: | 10.3.162.28 |
Компания: | Adobe Systems Incorporated |
Имя файла: | be32.tmp |
KB: | 349136 |
SHA-1: | bb041326444427a2d4a73d5b1679af4c2eda9e43 |
MD5: | 4d2da1c253528548e195cae612cccfe8 |
CRC32: |
Продукт Solvusoft
Загрузка
WinThruster 2023 — Сканировать ваш компьютер на наличие ошибок реестра в be32.tmp
Windows
11/10/8/7/Vista/XP
Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление
TMP
be32.tmp
Идентификатор статьи: 1328560
Be32.tmp
Имя файла | MD5 | Размер (в байтах) | Загрузить | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+ be32.tmp | 4d2da1c253528548e195cae612cccfe8 | 340.95 KB | ||||||||||||||||||
|
Классические проблемы Be32.tmp
Проблемы, возникающие с be32.tmp и Flash Player Helper, включают:
- «Ошибка: be32.tmp. «
- «Отсутствует файл Be32.tmp.»
- «Не удалось найти be32.tmp. «
- «Не удалось загрузить be32.tmp. «
- «Ошибка регистрации: be32.tmp. «
- «Ошибка во время выполнения: be32.tmp. «
- «Ошибка загрузки be32.tmp.»
DEBUG NO TRANSLATION При возникновении ошибки be32.tmp запишите вхождения для устранения неполадок Flash Player Helper и HelpAdobe Systems Incorporated найти причину.
Be32.tmp Истоки проблем
Заражение вредоносными программами, недопустимые записи реестра Flash Player Helper или отсутствующие или поврежденные файлы be32.tmp могут создать эти ошибки be32.tmp.
В первую очередь, проблемы с be32.tmp, созданные:
- Поврежденные ключи реестра Windows, связанные с be32.tmp / Flash Player Helper.
- Вирус или вредоносное ПО, которые повредили файл be32.tmp или связанные с Flash Player Helper программные файлы.
- be32.tmp ошибочно удален или злонамеренно программным обеспечением, не связанным с приложением Flash Player Helper.
- be32.tmp конфликтует с другой программой (общим файлом).
- Некомплектная установка приложения, связанного с be32.tmp, или поврежденная загрузка.
Я пытаюсь создать простой пакет rpm на centos 6.5. Но я не могу закончить его, поскольку он дает мне ошибки. Я уже следил за этими двумя потоками. Плохой статус выхода из /var/tmp/rpm-tmp.b1DgAt (% build) и плохой статус выхода из /var/tmp/rpm-tmp.ajKra4 (% prep).. еще не повезло…
Я не могу понять, что мне здесь не хватает. Пожалуйста, помогите мне исправить это.
это мой
Name: test
Version: 1.0
Release: 1%{?dist}
Summary: A test packageGroup: Testing
License: GPL
URL: http://www.yahoo.com
Source0: test-1.0.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)BuildRequires: /bin/rm, /bin/mkdir, /bin/cp
Requires: /bin/bash, /bin/date%description
this is the test package build for rhche%prep
%setup -q%build
./configure
%install
rm -rf $RPM_BUILD_ROOT
make -p $RPM_BUILD_ROOT/usr/local/bin
cp myscriptdate $RPM_BUILD_ROOT/usr/local/bin%clean
rm -rf $RPM_BUILD_ROOT%files
%defattr(-,root,root,-)
%attr(0755,root,root)/usr/local/bin/myscriptdate
%changelog
* Thu Dec 09 2010 Forrest <forrest@redhat.com> 1.0-1
-Initial RPM
-Added /usr/local/bin/myscript
Исходный каталог -/test1
[ara@catshit test1]$ pwd
/test1
[ara@catshit test1]$ ls -ls
total 12
4 drwxrwxrwx. 2 ara ara 4096 Dec 7 00:02 test-1.0
4 -rw-rw-r--. 1 ara ara 210 Dec 7 00:09 test-1.0.tar.gz
4 -rwxrwxrwx. 1 ara ara 742 Dec 7 00:17 test.spec
[ara@catshit test1]$
test-1.0 сжимается как test-1.0.tar.gz. Inside test-1.0 У меня есть скрипт myscriptdate, который имеет следующий код.
«#!/Bin/Баш
Дата
когда я пытаюсь rpmbuild -ba test.spec
это дает мне
# Not a target:
.f:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@# Not a target:
.f.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.f) $(OUTPUT_OPTION) $<# files hash-table stats:
# Load=70/1024=7%, Rehash=0, Collisions=278/1660=17%
# VPATH Search Paths# No 'vpath' search paths.
# No general ('VPATH' variable) search path.
# # of strings in strcache: 0
# # of strcache buffers: 0
# strcache size: total = 0 / max = 0 / min = 4096 / avg = 0
# strcache free: total = 0 / max = 0 / min = 4096 / avg = 0# Finished Make data base on Sun Dec 7 00:51:01 2014
error: Bad exit status from /var/tmp/rpm-tmp.ZFlmeu (%install)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.ZFlmeu (%install)
Содержимое /var/tmp/rpm-tmp.ZFlmeu ниже
#!/bin/sh
RPM_SOURCE_DIR="/home/ara/rpmbuild/SOURCES"
RPM_BUILD_DIR="/home/ara/rpmbuild/BUILD"
RPM_OPT_FLAGS="-O2 -g"
RPM_ARCH="x86_64"
RPM_OS="linux"
export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS
RPM_DOC_DIR="/usr/share/doc"
export RPM_DOC_DIR
RPM_PACKAGE_NAME="test"
RPM_PACKAGE_VERSION="1.0"
RPM_PACKAGE_RELEASE="1.el6"
export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE
LANG=C
export LANG
unset CDPATH DISPLAY ||:
RPM_BUILD_ROOT="/home/ara/rpmbuild/BUILDROOT/test-1.0-1.el6.x86_64"
export RPM_BUILD_ROOTPKG_CONFIG_PATH="/usr/lib64/pkgconfig:/usr/share/pkgconfig"
export PKG_CONFIG_PATHset -x
umask 022
cd "/home/ara/rpmbuild/BUILD"
cd 'test-1.0'
rm -rf $RPM_BUILD_ROOT
make -p $RPM_BUILD_ROOT/usr/local/bin
cp myscriptdate $RPM_BUILD_ROOT/usr/local/bin
/usr/lib/rpm/brp-compress
/usr/lib/rpm/brp-strip
/usr/lib/rpm/brp-strip-static-archive
/usr/lib/rpm/brp-strip-comment-note
damien
07.08.09 — 10:14
v8: Ошибка совместного доступа к файлу C:Tempv8….tmp
Проблема с 1С 8.1 (8.1.11.67).
1) Работа в режиме «Конфигуратор». При попытке обращения к любому пункту меню «Справка»:
• Справка F1
• Содержание справки Shift+F1
• Индекс справки Alt+ Shift+F1
• Поиск в справке
• Синтаксис-помощник Ctrl+ Shift+F1
• Поиск в синтаксис-помошнике Ctrl+ F1
— выводится диалоговое окно с сообщением: «Ошибка совместного доступа к файлу C:Tempv8….tmp» и далее варианты продолжения: «Завершить работу» «Перезапустить»
При этом среди файлов «.tmp», формируемых при запуске 1С, указанного в сообщении файла действительно нет, а его наименование обычно на 1 разряд превышает имя последнего файла .tmp, формируемого при запуске 1С, например:
— самое последнее наименование созданного при запуске 1С файла .tmp «v8_5D_d.tmp», а в сообщение указано имя «v8_5D_e.tmp»
2) Такая же реакции следует и при работе в режиме «1С Предприятие»
после выбора справки «?» по документу, например, при попытке выбрать элемент(главу) справки.
От имеющейся конфигурации это никак не зависит (проявляется на всех, в т.ч. на пустых)
Удаление (деинсталляция) платформы и последующая ее установка проблему не устраняет, также как и чистка реестра с помощью программы CCleaner.
Предшествующие события, после которых было замечена проблема:
• появление вирусов на компьютере
• удаление содержимого папки C:Temp
• загрузка и установка пробной версии (1 месяц) антивируса Касперского 8.0.0.506 (при этом произошла деинсталляция антивируса NOD).
• Проверка компьютера антивирусом Касперского 8.0.0.506 и удаление обнаруженных вирусов
Уже не знаю, что делать. Может кто встречался с таким, что делать?
damien
2 — 07.08.09 — 10:20
для всех у кого такая проблема следующая информация:
Касперский (КАV и KIS) не очень любят 1С в принципе.
Продлема решается просто и без всяких удалений. На примере KIS 8.0.0.506:
1. Заходим в настройки каспера
2. Идем в «Параметры» — «Угрозы и исключения»
3. Давим кнопку «Доверенная зона»
4. Идем во вкладку «Доверенные приложения»
5. Давим «Добавить» и выбираем «Приложения» -> C:Program Files1cv81bin1cv8.exe
6. сохраняем настройки и наслаждаемся нормальной работой 1С.
7. Для 1С 7.7, кстати, порядок тот же, там тоже бывают глюки в конфигураторе при сохранении конфы.
Всем удачи.
Устройства, работающие в операционных системах Windows, имеют папку в каталоге C с именем System32. Он содержит файлы, которые имеют решающее значение для функционирования операционной системы Windows. Вы можете получить доступ к папке System32 на диске C, но вы никогда не должны удалять какие-либо файлы и папки, содержащиеся в ней, так как это может вызвать серьезные проблемы с вашей системой и доставить вам неприятности. Однако вы можете обнаружить, что папка System32 может содержать много пустых временных папок. Имя этих временных папок начинается с tw и заканчивается на tmp. В этом посте мы обсудим эти папки tw tmp и сможем ли вы их удалить.
Некоторые пользователи Windows 10 обнаружили множество таких папок tw tmp в папке System32. Когда они открыли эти папки, то ничего внутри них не нашли. Более того, количество папок tw tmp внутри папки System32 у разных пользователей разное. Некоторые пользователи сообщали о сотнях таких папок, тогда как другие сообщали о менее чем сотне. Однако, когда я проверил свою систему, я обнаружил только 46 папок tw tmp на своем ноутбуке с Windows 11.
Если вы хотите проверить, сколько папок tw tmp находится на вашем устройстве с Windows 11/10, откройте проводник и перейдите по следующему пути:
C:WindowsSystem32configsystemprofileAppDataLocal
Чтобы получить доступ к указанному выше пути в проводнике, вы должны войти в свою систему как администратор. Это потому, что вам нужны права администратора, чтобы открыть папку System32. Когда вы дважды щелкните папку System32, чтобы открыть ее, вы получите следующее всплывающее сообщение:
В настоящее время у вас нет разрешения на доступ к этой папке.
Нажмите Продолжать чтобы открыть папку System32.
В планировщике заданий есть задача под названием «Вход в систему», которая создает эти пустые папки в каталоге C. Причина, по которой задача входа в систему создает эти пустые папки на диске C, до сих пор неизвестна. Вы найдете задачу входа в систему в следующем месте планировщика заданий:
MicrosoftWindowsManagementProvisioning
Команда, которую он запускает при входе в систему любого пользователя:
%windir%system32ProvTool.exe /turn 5 /source LogonIdleTask
ProvTool.exe — это исполняемый исполняемый файл, принадлежащий процессу средства обработки времени выполнения пакета Provisioning. Теперь, когда этот процесс неожиданно завершается, в файле журнала может быть записан код ошибки 0x8007042B.
Можете ли вы удалить две папки tw tmp в папке System32?
Некоторые пользователи удалили эти папки и, по их словам, это не повлияло на производительность их систем и не создало никаких проблем. Поэтому, хотя вы можете удалить эти временные папки, поскольку они пустые папки, в качестве меры предосторожности вы можете сохранить их.
Некоторые пользователи обнаружили, что задача входа в систему продолжает создавать эти пустые папки в папке System32. Чтобы избавиться от этой проблемы, они отключили задачу входа в систему в планировщике заданий. После отключения задачи Windows перестала создавать эти пустые папки. Кроме того, у них не было никаких проблем с их системами после отключения задачи входа в систему.
Хотя мы не рекомендуем отключать вход в систему, который является системной задачей, если вы решите отключить запланированную задачу входа в систему, вы можете сделать это следующим образом. Но прежде чем продолжить, мы предлагаем вам создать точку восстановления системы, чтобы в случае возникновения какой-либо проблемы после отключения задачи вы могли восстановить свою систему обратно в предыдущее рабочее состояние.
- Нажмите «Поиск Windows» и введите «Планировщик заданий».
- Выберите приложение «Планировщик заданий» в результатах поиска.
- В планировщике заданий выберите «Библиотека планировщика заданий» > «Microsoft» > «Windows» > «Управление» > «Инициализация».
- Вы увидите задачу входа в систему с правой стороны.
- Щелкните его правой кнопкой мыши и выберите «Отключить».
Если после отключения этой задачи у вас не возникает никаких проблем, вы можете оставить ее отключенной.
Прочтите: безопасно ли удалять пустые папки или файлы с нулевым байтом в Windows?
Какие файлы TMP безопасно удалять?
Файлы TMP или временные файлы создаются в операционной системе Windows программами, которые мы запускаем. Эти файлы TMP хранят временные данные, которые требуются программам для выполнения определенной задачи. После того, как программа завершит задачу, эти файлы TMP станут излишними.
Некоторые программы автоматически удаляют временные файлы, когда мы их закрываем. Некоторые из вас могли видеть временные файлы, созданные программами Microsoft Office, такими как Excel и Word. Данные, которые мы редактируем в документе Word или электронной таблице Excel, временно сохраняются в этих файлах. Когда вы выходите из Word или Excel после сохранения своей работы, эти файлы TMP автоматически удаляются.
Поскольку все программы не удаляют созданные ими файлы TMP после завершения задачи, эти файлы TMP со временем начинают занимать место на вашем диске C. Когда на вашем компьютере заканчивается место на диске C, вы столкнетесь с проблемами производительности. Чтобы избежать такой проблемы, вы можете удалить эти файлы TMP. Все файлы TMP, созданные программным обеспечением, можно безопасно удалить, и после их удаления у вас не возникнет никаких проблем с устройством Windows.
Существуют разные способы удаления файлов TMP:
- Использование настроек Windows
- Использование проводника (ручной метод)
- Используйте «Контроль памяти» для автоматического удаления временных файлов
- Создайте BAT-файл
- Использование командной строки
- Использование очистки диска
- Используйте стороннее программное обеспечение для очистки диска.
Читайте: Нежелательные файлы в Windows, что можно безопасно удалить?
Почему так много файлов .TMP?
В операционной системе Windows файлы TMP создаются различными программами, которые мы используем для своей работы. Для разных задач создаются разные файлы TMP. Вот почему на наших устройствах с Windows так много файлов .TMP. Удаление этих временных файлов безопасно. Следовательно, вы можете удалить их, чтобы освободить место на диске C.
Надеюсь это поможет.
Читать дальше: что такое папка WpSystem? Безопасно ли его удалять?
Я пишу код сборки, который можно скомпилировать:
as power.s -o power.o
возникает проблема, когда я связываю файл объекта power.o:
ld power.o -o power
Чтобы работать на 64-битной ОС (Ubuntu 14.04), я добавил .code32
в начале файла power.s
, но все равно получаю ошибку:
Ошибка сегментации (сброс ядра)
power.s
:
.code32
.section .data
.section .text
.global _start
_start:
pushl $3
pushl $2
call power
addl $8, %esp
pushl %eax
pushl $2
pushl $5
call power
addl $8, %esp
popl %ebx
addl %eax, %ebx
movl $1, %eax
int $0x80
.type power, @function
power:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
movl 8(%ebp), %ebx
movl 12(%ebp), %ecx
movl %ebx, -4(%ebp)
power_loop_start:
cmpl $1, %ecx
je end_power
movl -4(%ebp), %eax
imull %ebx, %eax
movl %eax, -4(%ebp)
decl %ecx
jmp power_loop_start
end_power:
movl -4(%ebp), %eax
movl %ebp, %esp
popl %ebp
ret
Ответ 1
TL: DR: используйте gcc -m32
.
.code32
не изменяет формат выходного файла, а также то, что определяет режим, в котором будет работать ваша программа. Вам не нужно запускать 32-битный код в режиме 64 бит. .code32
предназначен для сборки «чужого» машинного кода, который может потребоваться в качестве данных, или для экспорта в сегменте общей памяти. Если это не то, что вы делаете, избегайте этого, чтобы получить ошибки времени сборки при построении .S
в неправильном режиме, если у него есть какие-либо инструкции push
или pop
, например.
Предложение: используйте расширение .S
для рукописного ассемблера. (gcc foo.S
будет запускаться через препроцессор C до as
, поэтому вы можете #include
заголовок с номерами системного вызова, например). Кроме того, он отличает его от .S
вывода компилятора (от gcc foo.c -O3 -S
).
gcc -g foo.S -o foo -m32 -nostdlib -static # static binary with absolutely no libraries or startup code
# -nostdlib by itself makes static executables on Linux, but not OS X.
gcc -g foo.S -o foo -m32 # dynamic binary including the startup boilerplate code. Use with code that defines a main() but not a _start
Документация для nostdlib
, -nostartfiles
и -static
.
Использование функций libc из _start
(см. конец этого ответа для примера)
Некоторые функции, такие как malloc(3)
или stdio-функции, включая printf(3)
, зависят от инициализации некоторых глобальных данных (например, FILE *stdout
и объекта, на который он фактически указывает).
gcc -nostartfiles
не содержит код шаблона CRT _start
, но все же связывает libc
(динамически, по умолчанию). В Linux общие библиотеки могут иметь разделы инициализатора, которые запускаются динамическим компоновщиком, когда он загружает их, прежде чем переходить к вашей точке входа _start
. Так что gcc -nostartfiles hello.S
по-прежнему позволяет вам звонить printf
. Для динамического исполняемого файла ядро запускает /lib/ld-linux.so.2
вместо его непосредственного использования (используйте readelf -a
, чтобы увидеть строку «ELF интерпретатор» в вашем двоичном файле). Когда ваш _start
в конечном итоге будет запущен, не все регистры будут обнулены, потому что динамический компоновщик выполнил код в вашем процессе.
Однако gcc -nostartfiles -static hello.S
свяжется, но сбой во время выполнения, если вы вызываете printf
или что-то, не вызывая внутренние функции init glibc. (см. комментарий Майкла Пётча).
Конечно, вы можете поместить любую комбинацию файлов .c
, .S
и .o
в одну и ту же командную строку, чтобы связать их все в один исполняемый файл. Если у вас есть C, не забудьте -Og -Wall -Wextra
: вы не хотите отлаживать ваш asm, когда проблема была чем-то простым в C, который вызывает это, о котором компилятор мог предупредить вас.
Используйте -v
, чтобы gcc показывал вам команды, которые он запускает для сборки и соединения. Сделать это «вручную» :
as foo.S -o foo.o -g --32 && # skips the preprocessor
ld -o foo foo.o -m elf_i386
file foo
foo: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
gcc -nostdlib -m32
легче запомнить и напечатать, чем два разных варианта для as и ld (--32
и -m elf_i386
). Кроме того, он работает на всех платформах, включая те, где исполняемый формат не является ELF. ( Но примеры Linux не будут работать в OS X, потому что номера системных вызовов отличаются или в Windows, потому что они даже не используют int 0x80
ABI.)
NASM/Yasm
gcc не может обрабатывать синтаксис NASM. (-masm=intel
больше похож на MASM, чем на синтаксис NASM, где вам нужно offset symbol
, чтобы получить адрес сразу). И, конечно, директивы различны (например, .globl
vs global
).
Вы можете построить с помощью nasm
или yasm
, затем свяжите .o
с gcc
, как указано выше, или ld
напрямую.
Я использую оболочку script, чтобы избежать повторного ввода одного и того же имени файла с тремя разными расширениями. (nasm и yasm по умолчанию — file.asm
→ file.o
, в отличие от GNU в качестве вывода по умолчанию a.out
). Используйте это с помощью -m32
, чтобы собрать и связать 32-разрядные исполняемые файлы ELF. Не все ОС используют ELF, поэтому этот script менее переносимый, чем использование gcc -nostdlib -m32
для ссылки будет..
#!/bin/sh
# usage: asm-link [-q] [-m32] foo.asm [assembler options ...]
# Just use a Makefile for anything non-trivial. This script is intentionally minimal and doesn't handle multiple source files
verbose=1 # defaults
fmt=-felf64
#ldopt=-melf_i386
while getopts 'm:vq' opt; do
case "$opt" in
m) if [ "m$OPTARG" = "m32" ]; then
fmt=-felf32
ldopt=-melf_i386
fi
if [ "m$OPTARG" = "mx32" ]; then
fmt=-felfx32
ldopt=-melf32_x86_64
fi
# default is -m64
;;
q) verbose=0 ;;
v) verbose=1 ;;
esac
done
shift "$((OPTIND-1))" # Shift off the options and optional --
src=$1
base=${src%.*}
shift
[ "$verbose" = 1 ] && set -x # print commands as they're run, like make
#yasm "$fmt" -Worphan-labels -gdwarf2 "$src" "[email protected]" &&
nasm "$fmt" -Worphan-labels -g -Fdwarf "$src" "[email protected]" &&
ld $ldopt -o "$base" "$base.o"
# yasm -gdwarf2 includes even .local labels so they show up in objdump output
# nasm defaults to that behaviour of including even .local labels
# nasm defaults to STABS debugging format, but -g is not the default
Я предпочитаю yasm по нескольким причинам, в том числе по умолчанию для создания long- nop
вместо заполнения со многими однобайтовыми nop
s. Это приводит к беспорядочному выводу разборки, а также к замедлению, если nops когда-либо выполняются. (В NASM вам нужно использовать макрос smartalign
.)
Пример: программа, использующая функции libc из _start
# hello32.S
#include <asm/unistd_32.h> // syscall numbers. only #defines, no C declarations left after CPP to cause asm syntax errors
.text
#.global main # uncomment these to let this code work as _start, or as main called by glibc _start
#main:
#.weak _start
.global _start
_start:
mov $__NR_gettimeofday, %eax # make a syscall that we can see in strace output so we know when we get here
int $0x80
push %esp
push $print_fmt
call printf
#xor %ebx,%ebx # _exit(0)
#mov $__NR_exit_group, %eax # same as glibc _exit(2) wrapper
#int $0x80 # won't flush the stdio buffer
movl $0, (%esp) # reuse the stack slots we set up for printf, instead of popping
call exit # exit(3) does an fflush and other cleanup
#add $8, %esp # pop the space reserved by the two pushes
#ret # only works in main, not _start
.section .rodata
print_fmt: .asciz "Hello, World!n%%esp at startup = %#lxn"
$ gcc -m32 -nostdlib hello32.S
/tmp/ccHNGx24.o: In function `_start':
(.text+0x7): undefined reference to `printf'
...
$ gcc -m32 hello32.S
/tmp/ccQ4SOR8.o: In function `_start':
(.text+0x0): multiple definition of `_start'
...
Сбой во время выполнения, потому что ничего не вызывает функции init glibc. (__libc_init_first
, __dl_tls_setup
и __libc_csu_init
в этом порядке, в соответствии с комментарием Михаила Петча. Существуют и другие реализации libc
, включая MUSL, который предназначен для статической компоновки и работает без вызовов инициализации.)
$ gcc -m32 -nostartfiles -static hello32.S # fails at run-time
$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, BuildID[sha1]=ef4b74b1c29618d89ad60dbc6f9517d7cdec3236, not stripped
$ strace -s128 ./a.out
execve("./a.out", ["./a.out"], [/* 70 vars */]) = 0
[ Process PID=29681 runs in 32 bit mode. ]
gettimeofday(NULL, NULL) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=0} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)
Вы также можете gdb ./a.out
и запустите b _start
, layout reg
, run
и посмотрите, что произойдет.
$ gcc -m32 -nostartfiles hello32.S # Correct command line
$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=7b0a731f9b24a77bee41c13ec562ba2a459d91c7, not stripped
$ ./a.out
Hello, World!
%esp at startup = 0xffdf7460
$ ltrace -s128 ./a.out > /dev/null
printf("Hello, World!n%%esp at startup = %#lxn", 0xff937510) = 43 # note the different address: Address-space layout randomization at work
exit(0 <no return ...>
+++ exited (status 0) +++
$ strace -s128 ./a.out > /dev/null # redirect stdout so we don't see a mix of normal output and trace output
execve("./a.out", ["./a.out"], [/* 70 vars */]) = 0
[ Process PID=29729 runs in 32 bit mode. ]
brk(0) = 0x834e000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
.... more syscalls from dynamic linker code
open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
mmap2(NULL, 1814236, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff7556000 # map the executable text section of the library
... more stuff
# end of dynamic linker code, finally jumps to our _start
gettimeofday({1461874556, 431117}, NULL) = 0
fstat64(1, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0 # stdio is figuring out whether stdout is a terminal or not
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0xff938870) = -1 ENOTTY (Inappropriate ioctl for device)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7743000 # 4k buffer for stdout
write(1, "Hello, World!n%esp at startup = 0xff938fb0n", 43) = 43
exit_group(0) = ?
+++ exited with 0 +++
Если бы мы использовали _exit(0)
или сделали систему sys_exit
себя с int 0x80
, write(2)
не произошло бы. Если stdout перенаправлен на не-tty, по умолчанию он заполняется с полным буфером (не с буферизацией строки), поэтому write(2)
запускается только fflush(3)
как часть exit(3)
. Без перенаправления вызов printf(3)
со строкой, содержащей символы новой строки, немедленно будет скрыт.
Поведение по-разному в зависимости от того, является ли stdout терминалом, может быть желательным, но только если вы делаете это специально, а не по ошибке.
Как правило, такие TMP ошибки возникают из-за повреждённых или отсутствующих файлов be32.tmp, а иногда — в результате заражения вредоносным ПО в настоящем или прошлом, что оказало влияние на Flash Player Helper. Как правило, любую проблему, связанную с файлом TMP, можно решить посредством замены файла на новую копию. Мы также рекомендуем выполнить сканирование реестра, чтобы очистить все недействительные ссылки на be32.tmp, которые могут являться причиной ошибки.
Ниже представлена наша база версий файлов be32.tmp для большинства выпусков операционной системы Windows (включая %%os%%), где вы также можете их скачать. Для скачивания доступны не все версии be32.tmp, однако вы можете запросить необходимых файл, нажав на кнопку Request (Запрос) ниже. В редких случаях, если вы не можете найти версию необходимого вам файла ниже, мы рекомендуем вам обратиться за дополнительной помощью к Adobe Systems Incorporated.
Если вы успешно заменили соответствующий файл в соответствующем месте, у вас больше не должно возникать проблем, связанных с be32.tmp. Однако мы рекомендуем выполнить быструю проверку, чтобы окончательно в этом убедиться. Затем вы можете повторно открыть Flash Player Helper, чтобы проверить выводится ли сообщение об ошибке.
Be32.tmp Описание файла | |
---|---|
Тип: | TMP |
Функция: | Adobe Flash Player Helper 10.1 r85 |
Новейшие программы: | Flash Player Helper |
Версия выпуска: | 10.3.162.28 |
Компания: | Adobe Systems Incorporated |
Имя файла: | be32.tmp |
KB: | 349136 |
SHA-1: | bb041326444427a2d4a73d5b1679af4c2eda9e43 |
MD5: | 4d2da1c253528548e195cae612cccfe8 |
CRC32: |
Продукт Solvusoft
Загрузка
WinThruster 2023 — Сканировать ваш компьютер на наличие ошибок реестра в be32.tmp
Windows
11/10/8/7/Vista/XP
Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление
TMP
be32.tmp
Идентификатор статьи: 1328560
Be32.tmp
Имя файла | MD5 | Размер (в байтах) | Загрузить | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+ be32.tmp | 4d2da1c253528548e195cae612cccfe8 | 340.95 KB | ||||||||||||||||||
|
Классические проблемы Be32.tmp
Проблемы, возникающие с be32.tmp и Flash Player Helper, включают:
- «Ошибка: be32.tmp. «
- «Отсутствует файл Be32.tmp.»
- «Не удалось найти be32.tmp. «
- «Не удалось загрузить be32.tmp. «
- «Ошибка регистрации: be32.tmp. «
- «Ошибка во время выполнения: be32.tmp. «
- «Ошибка загрузки be32.tmp.»
The errors associated with be32.tmp occur when related software (eg. Flash Player Helper) is running, during PC shutdown or startup, При возникновении ошибки be32.tmp запишите вхождения для устранения неполадок Flash Player Helper и HelpAdobe Systems Incorporated найти причину.
Be32.tmp Истоки проблем
Заражение вредоносными программами, недопустимые записи реестра Flash Player Helper или отсутствующие или поврежденные файлы be32.tmp могут создать эти ошибки be32.tmp.
В первую очередь, проблемы с be32.tmp, созданные:
- Поврежденные ключи реестра Windows, связанные с be32.tmp / Flash Player Helper.
- Вирус или вредоносное ПО, которые повредили файл be32.tmp или связанные с Flash Player Helper программные файлы.
- be32.tmp ошибочно удален или злонамеренно программным обеспечением, не связанным с приложением Flash Player Helper.
- be32.tmp конфликтует с другой программой (общим файлом).
- Некомплектная установка приложения, связанного с be32.tmp, или поврежденная загрузка.
Я пытаюсь создать простой пакет rpm на centos 6.5 .. Но я не могу закончить его, так как он дает мне ошибки .. Я уже следил за этими двумя потоками .. Неверный статус выхода из /var/tmp/rpm-tmp.b1DgAt (% build) и Плохой статус выхода из /var/tmp/rpm-tmp.ajKra4 (% Prep ).. пока не повезло …
Я не могу понять, что мне здесь не хватает … пожалуйста, помогите мне это исправить …
Это мой
Name: test
Version: 1.0
Release: 1%{?dist}
Summary: A test package
Group: Testing
License: GPL
URL: http://www.yahoo.com
Source0: test-1.0.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: /bin/rm, /bin/mkdir, /bin/cp
Requires: /bin/bash, /bin/date
%description
this is the test package build for rhche
%prep
%setup -q
%build
./configure
%install
rm -rf $RPM_BUILD_ROOT
make -p $RPM_BUILD_ROOT/usr/local/bin
cp myscriptdate $RPM_BUILD_ROOT/usr/local/bin
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%attr(0755,root,root)/usr/local/bin/myscriptdate
%changelog
* Thu Dec 09 2010 Forrest <forrest@redhat.com> 1.0-1
-Initial RPM
-Added /usr/local/bin/myscript
Исходный каталог / test1
[ara@catshit test1]$ pwd
/test1
[ara@catshit test1]$ ls -ls
total 12
4 drwxrwxrwx. 2 ara ara 4096 Dec 7 00:02 test-1.0
4 -rw-rw-r--. 1 ara ara 210 Dec 7 00:09 test-1.0.tar.gz
4 -rwxrwxrwx. 1 ara ara 742 Dec 7 00:17 test.spec
[ara@catshit test1]$
Test-1.0 сжимается как test-1.0.tar.gz. Внутри test-1.0 у меня есть скрипт под названием myscriptdate, который имеет следующий простой код ..
‘#! / bin / bash
Дата
Когда я пробую rpmbuild -ba test.spec
, я получаю
# Not a target:
.f:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@
# Not a target:
.f.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.f) $(OUTPUT_OPTION) $<
# files hash-table stats:
# Load=70/1024=7%, Rehash=0, Collisions=278/1660=17%
# VPATH Search Paths
# No `vpath' search paths.
# No general (`VPATH' variable) search path.
# # of strings in strcache: 0
# # of strcache buffers: 0
# strcache size: total = 0 / max = 0 / min = 4096 / avg = 0
# strcache free: total = 0 / max = 0 / min = 4096 / avg = 0
# Finished Make data base on Sun Dec 7 00:51:01 2014
error: Bad exit status from /var/tmp/rpm-tmp.ZFlmeu (%install)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.ZFlmeu (%install)
/var/tmp/rpm-tmp.ZFlmeu содержимое ниже
#!/bin/sh
RPM_SOURCE_DIR="/home/ara/rpmbuild/SOURCES"
RPM_BUILD_DIR="/home/ara/rpmbuild/BUILD"
RPM_OPT_FLAGS="-O2 -g"
RPM_ARCH="x86_64"
RPM_OS="linux"
export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS
RPM_DOC_DIR="/usr/share/doc"
export RPM_DOC_DIR
RPM_PACKAGE_NAME="test"
RPM_PACKAGE_VERSION="1.0"
RPM_PACKAGE_RELEASE="1.el6"
export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE
LANG=C
export LANG
unset CDPATH DISPLAY ||:
RPM_BUILD_ROOT="/home/ara/rpmbuild/BUILDROOT/test-1.0-1.el6.x86_64"
export RPM_BUILD_ROOT
PKG_CONFIG_PATH="/usr/lib64/pkgconfig:/usr/share/pkgconfig"
export PKG_CONFIG_PATH
set -x
umask 022
cd "/home/ara/rpmbuild/BUILD"
cd 'test-1.0'
rm -rf $RPM_BUILD_ROOT
make -p $RPM_BUILD_ROOT/usr/local/bin
cp myscriptdate $RPM_BUILD_ROOT/usr/local/bin
/usr/lib/rpm/brp-compress
/usr/lib/rpm/brp-strip
/usr/lib/rpm/brp-strip-static-archive
/usr/lib/rpm/brp-strip-comment-note
1 ответ
Лучший ответ
Строка make -p $RPM_BUILD_ROOT/usr/local/bin
— это ваша проблема.
Хотя это не проблема, вы почти наверняка не хотите, чтобы -p
в этой строке. Поскольку он не делает для вас ничего полезного во время компиляции, и вашему процессу сборки rpm не нужно видеть базу данных правил make.
Настоящая проблема заключается в том, что вы говорите программе make, что вы хотели бы, чтобы она построила цель $RPM_BUILD_ROOT/usr/local/bin
, что невероятно маловероятно, чтобы программа make действительно знала, как построить (что приводит к тому, что make не сможет построить это и дает вам ошибку). Удаление -p
поможет вам увидеть фактическую ошибку, из-за которой программа make выплевывает, поскольку она также не выводит данные из базы данных правил.
Я думаю , что вы имели в виду mkdir -p
вместо этого. (Которая должна быть доступна как макрос %{__mkdir_p}
.)
8
Etan Reisner
7 Дек 2014 в 16:10
Im пытается создать простой пакет rpm на centos 6.5 .. Но я не могу закончить его, поскольку он дает мне ошибки .. Я уже выполнил эти две темы .. Bad exit status from /var/tmp/rpm-tmp.b1DgAt (%build) и Bad exit status from /var/tmp/rpm-tmp.ajKra4 (%prep) .. еще не везение …Ошибки сборки RPM: плохой статус выхода из /var/tmp/rpm-tmp.32XJLX (% install)
Я не могу понять, что я здесь отсутствует .. пожалуйста, помогите мне исправить это ..
это мой
Name: test
Version: 1.0
Release: 1%{?dist}
Summary: A test package
Group: Testing
License: GPL
URL: http://www.yahoo.com
Source0: test-1.0.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: /bin/rm, /bin/mkdir, /bin/cp
Requires: /bin/bash, /bin/date
%description
this is the test package build for rhche
%prep
%setup -q
%build
./configure
%install
rm -rf $RPM_BUILD_ROOT
make -p $RPM_BUILD_ROOT/usr/local/bin
cp myscriptdate $RPM_BUILD_ROOT/usr/local/bin
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%attr(0755,root,root)/usr/local/bin/myscriptdate
%changelog
* Thu Dec 09 2010 Forrest <[email protected]> 1.0-1
-Initial RPM
-Added /usr/local/bin/myscript
Исходный каталог является/test1
[[email protected] test1]$ pwd
/test1
[[email protected] test1]$ ls -ls
total 12
4 drwxrwxrwx. 2 ara ara 4096 Dec 7 00:02 test-1.0
4 -rw-rw-r--. 1 ara ara 210 Dec 7 00:09 test-1.0.tar.gz
4 -rwxrwxrwx. 1 ara ara 742 Dec 7 00:17 test.spec
[[email protected] test1]$
test-1.0 сжимается как test-1.0.tar.gz. Внутри тест-1,0 У меня есть сценарий под названием myscriptdate, который имеющий следующий простой код ..
«#!/Bin/Баш
Дата
когда я пытаюсь rpmbuild -ba test.spec
это дает мне
# Not a target:
.f:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o [email protected]
# Not a target:
.f.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.f) $(OUTPUT_OPTION) $<
# files hash-table stats:
# Load=70/1024=7%, Rehash=0, Collisions=278/1660=17%
# VPATH Search Paths
# No `vpath' search paths.
# No general (`VPATH' variable) search path.
# # of strings in strcache: 0
# # of strcache buffers: 0
# strcache size: total = 0/max = 0/min = 4096/avg = 0
# strcache free: total = 0/max = 0/min = 4096/avg = 0
# Finished Make data base on Sun Dec 7 00:51:01 2014
error: Bad exit status from /var/tmp/rpm-tmp.ZFlmeu (%install)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.ZFlmeu (%install)
содержание /var/tmp/rpm-tmp.ZFlmeu ниже
#!/bin/sh
RPM_SOURCE_DIR="/home/ara/rpmbuild/SOURCES"
RPM_BUILD_DIR="/home/ara/rpmbuild/BUILD"
RPM_OPT_FLAGS="-O2 -g"
RPM_ARCH="x86_64"
RPM_OS="linux"
export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS
RPM_DOC_DIR="/usr/share/doc"
export RPM_DOC_DIR
RPM_PACKAGE_NAME="test"
RPM_PACKAGE_VERSION="1.0"
RPM_PACKAGE_RELEASE="1.el6"
export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE
LANG=C
export LANG
unset CDPATH DISPLAY ||:
RPM_BUILD_ROOT="/home/ara/rpmbuild/BUILDROOT/test-1.0-1.el6.x86_64"
export RPM_BUILD_ROOT
PKG_CONFIG_PATH="/usr/lib64/pkgconfig:/usr/share/pkgconfig"
export PKG_CONFIG_PATH
set -x
umask 022
cd "/home/ara/rpmbuild/BUILD"
cd 'test-1.0'
rm -rf $RPM_BUILD_ROOT
make -p $RPM_BUILD_ROOT/usr/local/bin
cp myscriptdate $RPM_BUILD_ROOT/usr/local/bin
/usr/lib/rpm/brp-compress
/usr/lib/rpm/brp-strip
/usr/lib/rpm/brp-strip-static-archive
/usr/lib/rpm/brp-strip-comment-note
./configure --target-os=android --prefix=$PREFIX
--enable-cross-compile --enable-runtime-cpudetect --disable-asm --arch=arm
--cc=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-gcc
--cross-prefix=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-
--disable-stripping --nm=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-nm --sysroot=$PLATFORM --enable-gpl --enable-shared --disable-static --enable-small --disable-ffprobe --disable-ffplay --disable-ffmpeg --disable-ffserver --disable-debug --extra-cflags="-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a"
это вне положить журнал:
Makefile:2: config.mak: 没有那个文件或目录
Makefile:67: /common.mak: 没有那个文件或目录
Makefile:109: /libavutil/Makefile: 没有那个文件或目录
Makefile:109: /library.mak: 没有那个文件或目录
Makefile:111: /doc/Makefile: 没有那个文件或目录
Makefile:198: /tests/Makefile: 没有那个文件或目录
make: *** No rule to make target '/tests/Makefile'。 停止。
/opt/android/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc is unable to create an executable file.
C compiler test failed.
If you think configure made a mistake, make sure you are using the latest
version from Git. If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.log" produced by configure as this will help
solve the problem.
но мой gcc-путь отлично работает
/opt/android/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
arm-linux-androideabi-gcc: фатальная ошибка: компиляция входных файлов не завершена.
Кажется, файл temp не создается, я не могу найти временный файл в /tmp
это конец файла config.log:
dition: defined __ARM_ARCH_6T2__ || defined __TARGET_ARCH_6T2"
^
compilation terminated due to -Wfatal-errors.
check_cpp_condition stddef.h defined __ARM_ARCH_7__ || defined __TARGET_ARCH_7
check_cpp
BEGIN /tmp/ffconf.FHwGDPbC.c
1 #include <stddef.h>
2 #if !(defined __ARM_ARCH_7__ || defined __TARGET_ARCH_7)
3 #error "unsatisfied condition: defined __ARM_ARCH_7__ || defined __TARGET_ARCH_7"
4 #endif
END /tmp/ffconf.FHwGDPbC.c
/opt/android/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/opt/android/android-sdk-linux/ndk-bundle/platforms/android-arm -isysroot /opt/android/android-sdk-linux/ndk-bundle/platforms/android-arm -fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a -E -o /tmp/ffconf.csA8Jm6F.o /tmp/ffconf.FHwGDPbC.c
/tmp/ffconf.FHwGDPbC.c:3:2: error: #error "unsatisfied condition: defined __ARM_ARCH_7__ || defined __TARGET_ARCH_7"
#error "unsatisfied condition: defined __ARM_ARCH_7__ || defined __TARGET_ARCH_7"
^
compilation terminated due to -Wfatal-errors.
check_cpp_condition stddef.h defined __ARM_ARCH_7A__ || defined __TARGET_ARCH_7_A
check_cpp
BEGIN /tmp/ffconf.FHwGDPbC.c
1 #include <stddef.h>
2 #if !(defined __ARM_ARCH_7A__ || defined __TARGET_ARCH_7_A)
3 #error "unsatisfied condition: defined __ARM_ARCH_7A__ || defined __TARGET_ARCH_7_A"
4 #endif
END /tmp/ffconf.FHwGDPbC.c
/opt/android/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/opt/android/android-sdk-linux/ndk-bundle/platforms/android-arm -isysroot /opt/android/android-sdk-linux/ndk-bundle/platforms/android-arm -fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a -E -o /tmp/ffconf.csA8Jm6F.o /tmp/ffconf.FHwGDPbC.c
check_ld cc
check_cc
BEGIN /tmp/ffconf.FHwGDPbC.c
1 int main(void){ return 0; }
END /tmp/ffconf.FHwGDPbC.c
/opt/android/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/opt/android/android-sdk-linux/ndk-bundle/platforms/android-arm -isysroot /opt/android/android-sdk-linux/ndk-bundle/platforms/android-arm -fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a -march=armv7-a -c -o /tmp/ffconf.csA8Jm6F.o /tmp/ffconf.FHwGDPbC.c
/opt/android/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/opt/android/android-sdk-linux/ndk-bundle/platforms/android-arm -isysroot /opt/android/android-sdk-linux/ndk-bundle/platforms/android-arm -march=armv7-a -o /tmp/ffconf.fjKb0Qb0 /tmp/ffconf.csA8Jm6F.o
/opt/android/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot open crtbegin_dynamic.o: No such file or directory
/opt/android/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot open crtend_android.o: No such file or directory
/opt/android/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lc
/opt/android/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot find -ldl
collect2: error: ld returned 1 exit status
C compiler test failed.
Повреждение, отсутствие или удаление файлов demfb32.tmp может привести к ошибкам Third-Party Application. Для устранения неполадок, связанных с файлом TMP, большинство профессионалов ПК заменят файл на соответствующую версию. В некоторых случаях реестр Windows пытается загрузить файл demfb32.tmp, который больше не существует; в таких ситуациях рекомендуется запустить сканирование реестра, чтобы исправить любые недопустимые ссылки на пути к файлам.
Demfb32.tmp для %%os%% и почти для всех версий операционной системы Windows можно скачать ниже. Для скачивания доступны не все версии demfb32.tmp, однако вы можете запросить необходимых файл, нажав на кнопку Request (Запрос) ниже. В крайнем случае, если ниже отсутствует необходимая вам версия файла, вы всегда можете связаться с Windows Software Developer.
Если вы успешно заменили соответствующий файл в соответствующем месте, у вас больше не должно возникать проблем, связанных с demfb32.tmp. Однако мы рекомендуем выполнить быструю проверку, чтобы окончательно в этом убедиться. Вы можете проверить результат, запустив приложение Third-Party Application и проверить, появляется ли проблема.
Demfb32.tmp Описание файла | |
---|---|
File: | TMP |
Тип приложения: | |
Program: | Third-Party Application |
Версия программного обеспечения: | 1.0 |
Автор: | Windows Software Developer |
File: | demfb32.tmp |
Байт: | 120832 |
SHA-1: | 13d47d9f73dfa64f24bd6cef55bf14c78c1817e1 |
MD5: | d524617b436d6ee9a530b3a7d8266e1f |
CRC32: |
Продукт Solvusoft
Загрузка
WinThruster 2023 — Сканировать ваш компьютер на наличие ошибок реестра в demfb32.tmp
Windows
11/10/8/7/Vista/XP
Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление
TMP
demfb32.tmp
Идентификатор статьи: 1348182
Demfb32.tmp
Имя файла | Контрольная сумма MD5 | Размер (в байтах) | Загрузить | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+ demfb32.tmp | d524617b436d6ee9a530b3a7d8266e1f | 118.00 KB | ||||||||||||||||||
|
Ошибки Demfb32.tmp
Проблема Third-Party Application, связанная с demfb32.tmp, включает в
- «Ошибка: demfb32.tmp. «
- «Demfb32.tmp перемещен или отсутствует. «
- «demfb32.tmp не найден.»
- «Не удалось загрузить модуль Demfb32.tmp. «
- «Не удалось зарегистрировать demfb32.tmp.»
- «Ошибка выполнения: demfb32.tmp.»
- «Не удается загрузить demfb32.tmp. «
Проблемы, связанные с Demfb32.tmp, иногда связанные с Third-Party Application, возникают во время запуска/завершения работы, во время запуска программы, связанной с Demfb32.tmp, или редко во время процесса установки Windows. Ошибки Recordingdemfb32.tmp, связанные с Third-Party Application, имеют решающее значение для поиска проблем и пересылки Windows Software Developer для параметров восстановления.
Источник ошибок Demfb32.tmp
Проблемы Third-Party Application и demfb32.tmp возникают из отсутствующих или поврежденных файлов, недействительных записей реестра Windows и вредоносных инфекций.
В частности, проблемы demfb32.tmp возникают с:
- Запись demfb32.tmp повреждена или недопустима.
- Вирус или вредоносное ПО поврежден demfb32.tmp.
- demfb32.tmp ошибочно удален или злонамеренно программным обеспечением, не связанным с приложением Third-Party Application.
- demfb32.tmp конфликтует с другой программой (общим файлом).
- Поврежденная установка или загрузка Third-Party Application (demfb32.tmp).
Привет, я пытаюсь скомпилировать простые программы C на своем компьютере, и я получаю аналогичные сообщения из-под терминала [см. изображения] при компиляции с указанием какой-то ошибки сборки. Я не знаю, является ли это проблемой памяти/стека компьютера (хотя я перезагрузил свой компьютер) или чем-то еще, но что я знаю точно, так это то, что в последние дни я компилировал программы на C таким же образом.
Код:
#include <stdio.h>
main(){
printf("hello");
}
Выход:
/tmp/cconajAc.s: сообщения ассемблера: /tmp/cconajAc.s:9: ошибка: суффикс или операнд недействителен для `push’
Подскажите пожалуйста как это исправить!
ОТРЕДАКТИРОВАНО: я только что перешел с рабочей станции из другой компьютерной лаборатории, и она работает нормально, без каких-либо ошибок при сборке. Я предполагаю, что это ошибка инструментов разработки, установленных на тех компьютерах в другой лаборатории. Думаю, на данный момент это работает для меня, хотя было бы интересно узнать источник проблемы, которая возникла у меня на другом компьютере.
5 ответов
Ошибка кажется странной, но попробуйте добавить тип возвращаемого значения к вашему main()
: int main()
.
1
SomeWittyUsername
5 Ноя 2012 в 02:21
Напишите в редакторе vi и сохраните файл как «hello.c»:
#include <stdio.h>
int main() { printf("hello"); return 0; }
Проверьте, установлены ли у вас 32-разрядные заголовки glibc.
Попробуйте установить это в Ubuntu:
# apt-get install gcc-multilib
Тогда попробуйте:
# gcc -m32 -o hello hello.c
# gcc Wa,--32
еще
# gcc -m32 --32
1
askmish
5 Ноя 2012 в 02:48
В случае, если это поможет кому-то еще, для меня это, по-видимому, вызвано несоответствием компонентов цепочки инструментов — мне иногда приходится использовать внешние точечные файлы, которые изменяют мой PATH
(чтобы удовлетворить запутанную систему сборки, вздох). Ассемблер был /usr/bin/as
, но gcc
был какой-то древней версией.
0
jjlin
20 Авг 2014 в 04:29
Ошибка: суффикс или операнды недействительны для `push’
Проверьте архитектуру вашей системы:
# arch
x86_64
# arch
i386
Или используйте это:
#uname -m
x86_64
В сборке: 32bit(i386):
pushl instruction ;notice the suffix is l
64-битный (x86_64):
pushq instruction ;notice the suffix is q
Интересно, ваша системная арка — x86_64, она вызовет эту ошибку, когда вы используете 32-битную инструкцию. Для решения этой проблемы:
#gcc -m32 -o test test.c
См. Когда следует использовать параметр -m32 для gcc?
0
Community
23 Май 2017 в 14:48
В какой оболочке вы работаете при запуске gcc?
Попробуйте переключиться на tcsh/csh. я получил ту же ошибку в bash и переключил оболочку на tcsh.
0
aks
21 Ноя 2014 в 05:04