aws-lambda-cpp icon indicating copy to clipboard operation
aws-lambda-cpp copied to clipboard

Error "plugin needed to handle lto object" while building CPP runtime for Lambda

Open sumit2593 opened this issue 4 years ago • 2 comments

Following the blog post "https://aws.amazon.com/blogs/compute/introducing-the-c-lambda-runtime/" to create a custom CPP Lambda function, received an error "/usr/bin/ld: runtime.cpp.o: plugin needed to handle lto object"

Complete error - [ 50%] Building CXX object CMakeFiles/hello.dir/main.cpp.o [100%] Linking CXX executable hello /usr/bin/ld: runtime.cpp.o: plugin needed to handle lto object CMakeFiles/hello.dir/main.cpp.o: In function my_handler(aws::lambda_runtime::invocation_request const&)': main.cpp:(.text+0x3f): undefined reference to aws::lambda_runtime::invocation_response::success(std::string const&, std::string const&)' CMakeFiles/hello.dir/main.cpp.o: In function main': main.cpp:(.text.startup+0x23): undefined reference to aws::lambda_runtime::run_handler(std::function<aws::lambda_runtime::invocation_response (aws::lambda_runtime::invocation_request const&)> const&)' collect2: error: ld returned 1 exit status make[2]: *** [hello] Error 1 make[1]: *** [CMakeFiles/hello.dir/all] Error 2 make: *** [all] Error 2

command executed $ cmake3 .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=~/out ----> Successful $ make 3 -----> Errors as above

sumit2593 avatar Nov 12 '21 15:11 sumit2593

I had the same issue, but only when building with clang. Using gcc with all the same options was fine.

kkarbowiak avatar Apr 22 '22 12:04 kkarbowiak

I would bet this is the same issue like the one described in #151 .

This project by default uses LTO (Link Time Optimization). When building with clang with LTO enabled, the produced .a lib archive will contain LLVM IR Bitcode instead of native object files.

"/usr/bin/ld: runtime.cpp.o: plugin needed to handle lto object"

I would also bet the plugin ld is referring to is something like LLVM Gold Plugin

The point is that GNU ld (aka ld.bfd) doesn't support LTO (or LLVM IR Bitcode) directly. It may actually work but only if enabling plugins which would extend it and add support for LTO.

So you may have to

See #151 for more details

hbobenicio avatar Sep 05 '22 22:09 hbobenicio