我有 3 个小文件,用于制作静态库和应用程序:
test.h
#ifndef TEST_H
#define TEST_H
class Test
{
public:
Test();
};
extern Test* gpTest;
#endif
test.cpp
#include "test.h"
Test::Test()
{
gpTest = this;
}
Test test;
main.cpp
#include "test.h"
#include <iostream>
using namespace std;
Test* gpTest = NULL;
int main()
{
return 0;
}
构建
g++ -c test.cpp -o test.o
ar cr test.a test.o
g++ -c main.cpp -o main.o
g++ main.o -o app -Wl,--whole-archive -L/home/dumindara/intest/test.a -Wl,-no--whole-archive
错误(链接步骤)
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
我尝试了所有方法:使用 -static-libgcc 并链接到静态 libstdc++。不能让它工作。这都是由于 --whole-archive 标志。但我离不开它。
最佳答案
你打错了。 -no--whole-archive 应该是--no-whole-archive。修复拼写错误可修复链接器错误。
关于c++ - 如何解决链接器错误 "cannot find -lgcc_s",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3888409/