1

我正在尝试使用 aws sdk cpp 构建一个简单的示例。但是我偶然发现了一个构建步骤。我正在链接 libaws-cpp-sdk-s3.so 库,它应该包含源文件中的所有符号。但是链接器甚至找不到其中的几个。源文件是:

#include <aws/core/Aws.h>
int main( int argc, char ** argv)
{
    Aws::SDKOptions options;
    Aws::InitAPI(options);

    {
        // make your SDK calls here.
    }

    Aws::ShutdownAPI(options);
    return 0;
}

通过使用这个 Makefile:

CC = g++
CFLAGS = -g -c -Wall -std=c++11
LDFLAGS = -g
EXECUTABLE = ex1
RM = rm -f

SOURCES = main.cpp
OBJS = $(SOURCES:.cpp=.o)

all: $(EXECUTABLE)

$(EXECUTABLE): main.o -laws-cpp-sdk-s3
    $(CC) $(LDFLAGS) main.o -o $@

main.o: main.cpp
    $(CC) $(CFLAGS) $^ -o $@

.PHONY: clean
clean:
    $(RM) $(EXECUTABLE) $(OBJS) $(SOURCES:.cpp=.d)

当我运行 make 时,我得到了这个错误。但为什么?我建造了

g++ -g main.o -o ex1 main.o:在函数main': /home/username/workspace/ex1/src/main.cpp:6: undefined reference toAws::InitAPI(Aws::SDKOptions const&)' /home/username/workspace/ex1/src/main.cpp:12: 未定义引用`Aws: :ShutdownAPI(Aws::SDKOptions const&)' collect2:错误:ld 返回 1 个退出状态 Makefile:13:目标“ex1”的配方失败 make:*** [ex1] 错误 1

4

1 回答 1

4

我看不到你在哪里链接 libaws-cpp-sdk-core

你可能需要:

$(EXECUTABLE): main.o -laws-cpp-sdk-s3 -laws-cpp-sdk-core
    $(CC) $(LDFLAGS) main.o -o $@
于 2017-04-27T02:08:52.547 回答