Я потратил много часов сегодня, пытаясь выполнить эту, казалось бы, очень простую задачу, поэтому мое разочарование может показаться вам странным.
Я хочу "запустить" / выполнить программу, содержащую функции OpenCL, на моем SamsungGalaxy S7 (Exynos SoC).Поддержка OpenCL не должна быть проблемой, потому что: 1) это хорошо поддерживаемый флагманский телефон от известного производителя 2) libOpenCL.so
присутствует в /system/vendor/lib/libOpenCL.so
3) OpenCL-Z сообщает о допустимой платформе и устройстве (только для графического процессора)по какой-то причине)
Вещи, которые я пробовал: рутировал телефон.Установлен cppdroid.Попытка скомпилировать простую программу, которая содержит ссылки на стандартные функции OpenCL, такие как clGetPlatformIDs()
.
. Заголовочные файлы должны быть включены где-то, но я не мог на всю жизнь найти, где их разместить (используя тот же путьгде cppdroid хранит стандартные заголовочные файлы не работали), поэтому я вручную включил заголовки в сам файл .c, делая его едва редактируемым на самом телефоне.
Насколько я понимаю, мне следует связать библиотеку (libOpenCL.so
) к выходу gcc во время фазы соединения.Кажется, есть возможность сделать это в cppdroid, в разделе «Настройки», «Настройки проекта», «Параметры связи», поэтому я добавляю:
-L/system/vendor/lib/libOpenCL.so
в это поле.Однако компиляция все равно не удалась, и я получаю «неопределенные ссылки на clGetPlatformIDs ()», как если бы я вообще не включал библиотеку.
После поиска решения в сети, возможное решение (см. Ниже) оказалосьбесполезно: -Wl, - весь архив -L / system / vendor / lib / libOpenCL.so
Я думал, что получу gcc самостоятельно, так как это компилятор, используемый cppdroid, и попытка скомпилироватьсюда.Выяснилось, что он должен быть устаревшим и заменен на «лязг».Но в cppdroid есть gcc, поэтому я перешел в папку, содержащую исполняемый файл (я полагаю, что это исполняемый файл, здесь нет расширений, и я работаю в Windows), который выглядит так:
/data/data/name.antonsmirnov.android.cppdroid/sdk/gcc#4.8#2/bin
и попытался «выполнить» gcc-4.8
(который выглядит как исполняемый компилятор) из termux (эмулятор терминала для Android).К моему большому удивлению, я получил сообщение об ошибке:
sush: gcc-4.8: not found
Несмотря на то, что ls -1
отображает файл нормально!
Я пробовал другие разные вещи, которые не работали, но вот мой вопрос:
Как мне скомпилировать простую программу OpenCL, которую я написал на C, чтобы выполнить ее на моем мобильном устройстве Android?
Почему яполучить сообщение об ошибке
sush: gcc-4.8: not found
?