Aws Lambda: пользовательская среда выполнения C ++ - / usr / bin / ld: не удается найти /usr/lib64/libc_nonshared.a - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь добавить g++ внутрь AWS Lambda C++ custom runtime.

Теперь g++ требует файлов .so (общие библиотеки), а также .a (stati c библиотеки).

Для этого я установил g ++ внутри каталога ch root (каталог gpp) на машине Amazon Linux.

Теперь я создал еще один каталог, в котором есть каталоги bin, usr, lib и lib64 (взятые из каталога ch root). Я создал zip этого каталога, загрузил его в s3 (так как он превышает 50 МБ) и создал слой Lambda, используя этот zip-каталог.

Теперь, после добавления этого layer в функцию lambda , Я пытаюсь запустить.

execl("/opt/usr/bin/g++48", "/opt/usr/bin/g++48", "-Wall",  "/tmp/hello.cpp","-o", "/tmp/hello.o",
 "-I/opt/gpp3/usr/include/", (char *) 0)

Используя указанное выше g++, можно найти shared libraries, а также header files, но не удается найти библиотеку stati c.

/usr/bin/ld: cannot find /usr/lib64/libc_nonshared.a
collect2: error: ld returned 1 exit status

libc_nonshared.a существует внутри /opt/gpp3/usr/lib64/, но ищет в /usr/lib64/.

Я попытался указать полный путь в команде g ++ как -L/opt/gpp3/usr/lib64/libc_nonshared.a и -L/opt/gpp3/usr/lib64/libc_nonshared и -L/opt/gpp3/usr/lib64/

Но ни один из них не работает. Любая помощь приветствуется.

...