Cilk ++ cilkexample.c = 200 строк в stderr - PullRequest
1 голос
/ 09 декабря 2011

Я успешно установил Cilk на свой домашний компьютер, 32-битный компьютер с Ubuntu. Насколько я знаю, я воспроизвел этот процесс на моем 64-битном нетбуке Ubuntu, за исключением, конечно, того, что я скачал 64-битную версию вместо 32-битной. Однако при попытке запустить очень простой файл cilkexample.c, скопированный ниже, я получаю очень и очень много ошибок, все из которых связаны с отсутствием доступа к библиотечным файлам:

In file included from /usr/include/stdio.h:28,
                 from cilkexample.c:1:
/usr/include/features.h:323:26: error: bits/predefs.h: No such file or director\
y
/usr/include/features.h:356:25: error: sys/cdefs.h: No such file or directory
/usr/include/features.h:388:23: error: gnu/stubs.h: No such file or directory
In file included from cilkexample.c:1:
/usr/include/stdio.h:36:25: error: bits/types.h: No such file or directory
/usr/include/stdio.h:161:28: error: bits/stdio_lim.h: No such file or directory
/usr/include/stdio.h:846:30: error: bits/sys_errlist.h: No such file or directo\
ry
In file included from /usr/include/stdio.h:34,
                 from cilkexample.c:1:
/usr/local/cilk/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.2.4/include/stddef.h:\
214: error: expected constructor, destructor, or type conversion before ‘typede\
f’
In file included from cilkexample.c:1:
/usr/include/stdio.h:49: error: expected constructor, destructor, or type conve\
rsion before ‘typedef’

и так далее, и так далее, и так далее.

Вот файл, который я пытался скомпилировать с помощью команды cilk++ -o cilkexample cilkexample.c:

#include <stdio.h>
#include <cilk.h>

int foo() {
    return 100;
}

int bar() {
    return 50;
}

int cilk_main(int argc, char **argv) {
    int x, y;

    x = cilk_spawn foo();
    y = cilk_spawn bar();
    cilk_sync;

    printf("Got %d %d, expecting %d %d\n", x, y, 100, 50);
    return 0;
}

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

Последнее, что я могу вспомнить, это ПУТЬ.

******@********:~/Path/To/Cilk$ echo $PATH
/usr/local/cilk/bin/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Спасибо за вашу помощь!

1 Ответ

3 голосов
/ 09 декабря 2011

Похоже, вам не хватает некоторых заголовков. Вы говорите, что находитесь в Ubuntu, в которой заголовки распределены в xxx-dev пакетах.

Погуглив некоторые заголовки в вашей ошибке, я обнаружил, что bits/types.h является частью libc6-dev в Debian, вы должны проверить, что у вас по крайней мере этот пакет.

Вы должны уточнить у своего дистрибутива, в каком пакете появляются файлы, у меня нет машины Debian или Ubuntu для проверки прямо сейчас.

Редактировать: Я обнаружил, что у меня есть Ubuntu box, и похоже, что libc6-dev содержит как минимум все перечисленные файлы. dpkg-query -S [file] дает вам имя пакета

...