Сборка 32-битной с 64-битной llvm-gcc

Это потому, что вы должны передать функцию, а не строку:

function funcName() {
    alert("test");
}

setInterval(funcName, 10000);

В вашем коде две проблемы:

  • var func = funcName(); немедленно вызывает функцию и назначает возвращаемое значение.
  • Недопустимо только "func", даже если вы используете плохой и устаревший эквивалентный синтаксис setInterval. Было бы setInterval("func()", 10000) вызывать функцию eval-like.
14
задан Agent_9191 15 October 2009 в 14:54
поделиться

3 ответа

Попробуйте установить:

export CFLAGS="-m32"
export LDFLAGS="-m32"

перед компиляцией ...

5
ответ дан 1 December 2019 в 14:44
поделиться

Не могли бы вы попробовать эту серию команд и посмотреть, работает ли она? Теоретически, если вы предоставили llvm-gcc с опцией -m32, эти шаги должны быть предприняты llvm-gcc, но, возможно, он работает некорректно, поэтому давайте сделаем все шаги явными:

llvm-gcc -m32 -emit-llvm test.c -c -o test.bc
llc test.bc -march=x86 -o test.S
gcc test.S -m32 -o test

Это должна быть последовательность шагов (или что-то в этом роде аналогично), что llvm-gcc работает неявно, но похоже, что в вашем случае он по какой-то причине генерирует 64-битную сборку, а затем пытается собрать и связать ее для 32-битной.

4
ответ дан 1 December 2019 в 14:44
поделиться

У меня была та же проблема, llvm-gcc игнорирует флаги, единственное решение, которое сработало, - переключиться с llvm-gcc на clang, который уважает -m32. Это или переключитесь на 32-битную операционную систему для работы llvm-gcc.

3
ответ дан 1 December 2019 в 14:44
поделиться