我使用makefile来编译我的C ++程序,但显示警告:
make
g++ -g -std=c++0x -o ns-client main.cpp Client.cpp TCPConnect.cpp RSAsample.cpp libStatic/libchilkat_i386.a libStatic/libchilkat_x86_64.a -lpthread
ld: warning: ignoring file libStatic/libchilkat_i386.a, file was built for archive which is not the architecture being linked (x86_64): libStatic/libchilkat_i386.a
我的makefile如下:
cat Makefile
LIBS = libStatic/libchilkat_i386.a libStatic/libchilkat_x86_64.a -lpthread
GPP = g++ -g -std=c++0x
TARGET = -o ns-client
CPP = main.cpp Client.cpp TCPConnect.cpp RSAsample.cpp
all:
$(GPP) $(TARGET) $(CPP) $(LIBS)
clean:
rm ns-client
libchilkat_i386.a
并libchilkat_x86_64.a
通过我的下载,而不是由我来实现。我将它们放在一个名为“ libStatic”的目录下。这些都是我所有的C ++文件和lib:
ls
Client.cpp RSAsample.cpp libStatic
Client.h RSAsample.h main.cpp
Client_Common.h TCPConnect.cpp ns-client
Common_Num_Define.h TCPConnect.h ns-client.dSYM
Common_Protocol.h include ns-server
Makefile libDyn
在libStatic目录中,它具有:
ls
libchilkat_i386.a libchilkat_x86_64.a
我不知道为什么会发生这种警告。即使有此警告,它仍然可以成功编译。但是,当我将它们上传到我们学校的服务器并进行编译时(我肯定上传了这些静态库),它显示:
undefined reference to
许多这类错误。例如:
/home/users/liuly/liuly/networksecurity/project/cplus/client/Client.cpp:17: undefined reference to `CkRsa::exportPublicKey()'
这些错误中提到的所有这些函数和var应该包含在其中,libchilkat_i386.a libchilkat_x86_64.a
因此我怀疑可能是因为我的Makefile。但是我不确定。我也怀疑这可能与第一个警告有关。有人可以告诉我如何解决第一个警告,或者为什么它不能在另一台计算机上编译但可以在我自己的计算机上编译?感谢大家的帮助!
这是它在我们学校的服务器上显示的所有错误:
/tmp/ccA32Kao.o: In function `My_RSA::My_RSA()':
main.cpp:(.text._ZN6My_RSAC2Ev[_ZN6My_RSAC5Ev]+0x19): undefined reference to `CkRsa::CkRsa()'
main.cpp:(.text._ZN6My_RSAC2Ev[_ZN6My_RSAC5Ev]+0x2b): undefined reference to `CkRsa::CkRsa()'
main.cpp:(.text._ZN6My_RSAC2Ev[_ZN6My_RSAC5Ev]+0x3d): undefined reference to `CkRsa::CkRsa()'
main.cpp:(.text._ZN6My_RSAC2Ev[_ZN6My_RSAC5Ev]+0x54): undefined reference to `CkRsa::~CkRsa()'
main.cpp:(.text._ZN6My_RSAC2Ev[_ZN6My_RSAC5Ev]+0x69): undefined reference to `CkRsa::~CkRsa()'
/tmp/ccA32Kao.o: In function `My_RSA::~My_RSA()':
main.cpp:(.text._ZN6My_RSAD2Ev[_ZN6My_RSAD5Ev]+0x1a): undefined reference to `CkRsa::~CkRsa()'
main.cpp:(.text._ZN6My_RSAD2Ev[_ZN6My_RSAD5Ev]+0x2c): undefined reference to `CkRsa::~CkRsa()'
main.cpp:(.text._ZN6My_RSAD2Ev[_ZN6My_RSAD5Ev]+0x3c): undefined reference to `CkRsa::~CkRsa()'
/tmp/cciEnFVR.o: In function `Client::Register()':
/home/users/liuly/liuly/networksecurity/project/cplus/client/Client.cpp:17: undefined reference to `CkRsa::exportPublicKey()'
/home/users/liuly/liuly/networksecurity/project/cplus/client/Client.cpp:18: undefined reference to `CkRsa::exportPrivateKey()'
/tmp/cciEnFVR.o:在函数Client::Login()': /home/users/liuly/liuly/networksecurity/project/cplus/client/Client.cpp:128: undefined reference to
CkRsa :: exportPublicKey()'中/home/users/liuly/liuly/networksecurity/project/cplus/client/Client.cpp:129:对CkRsa::exportPrivateKey()' /tmp/cciEnFVR.o: In function
Client :: Judge_Command(char *)的未定义引用':/home/users/liuly/liuly/networksecurity/project/cplus/client/Client.cpp: CkRsa::exportPrivateKey()' /home/users/liuly/liuly/networksecurity/project/cplus/client/Client.cpp:931: undefined reference to
930:对CkRsa :: exportPublicKey()的未定义引用'/tmp/ccRMXreb.o:在函数My_RSA::MyEncryption(char const*, char const*)': /home/users/liuly/liuly/networksecurity/project/cplus/client/RSAsample.cpp: 16: undefined reference to
CkRsa :: put_EncodingMode(char const *)'/ CkRsa::ImportPublicKey(char const*)' /home/users/liuly/liuly/networksecurity/project/cplus/client/RSAsample.cpp: 25: undefined reference to
home/users/liuly/liuly/networksecurity/project/cplus/client/RSAsample.cpp :17:对CkRsa :: encryptStringENC(char const *,bool)的未定义引用'/tmp/ccRMXreb.o:在函数My_RSA::MyDecryption(char*)': /home/users/liuly/liuly/networksecurity/project/cplus/client/RSAsample.cpp: 33: undefined reference to
CkRsa :: put_EncodingMode(char const *)'/home/users/liuly/liuly/networksecurity/project/cplus/client/RSAsample.cpp:34:的未定义引用CkRsa::ImportPrivateKey(char const*)' /home/users/liuly/liuly/networksecurity/project/cplus/client/RSAsample.cpp: 42: undefined reference to
CkRsa :: decryptStringENC(char const *,bool)' My_RSA::My_Initial_Key()': /home/users/liuly/liuly/networksecurity/project/cplus/client/RSAsample.cpp: 52: undefined reference to
/tmp/ccRMXreb.o :在函数CkRsa :: UnlockComponent(char const *)'/ home / users / liuly / liuly / networksecurity / project / cplus / client / RSAsample中。 cpp:58:对CkRsa::GenerateKey(int)' /home/users/liuly/liuly/networksecurity/project/cplus/client/RSAsample.cpp: 61: undefined reference to
CkMultiByteBase :: lastErrorText()的未定义引用collect2:错误:ld返回1退出状态make:*** [all]错误1
所有应该属于CKRsa的功能都在中#include "include/CkRsa.h"
,但是我肯定在我们学校的服务器上创建了“ include”目录,并将这些CKRsa.h文件上传到该目录中。
我修改了我的makefile,但是它仍然不起作用:
cat Makefile
LFLAGS += -L /home/users/liuly/liuly/networksecurity/project/cplus/client/libStatic
LIBS = libStatic/libchilkat_x86_64.a -lpthread
GPP = g++ -g -std=c++0x
TARGET = -o ns-client
CPP = main.cpp Client.cpp TCPConnect.cpp Common_Protocol.h RSAsample.cpp TCPConnect.h Client.h RSAsample.h include/CkRsa.h
all:
$(GPP) $(LFLAGS) $(TARGET) $(CPP) $(LIBS)
我再次修改了makefile,但仍然无法正常工作:
cat Makefile
LFLAGS += -L /home/users/liuly/liuly/networksecurity/project/cplus/client/libStatic
LIBS = -lchilkat_x86_64 -lpthread
GPP = g++ -g -std=c++0x
TARGET = -o ns-client
CPP = main.cpp Client.cpp TCPConnect.cpp Common_Protocol.h RSAsample.cpp TCPConnect.h Client.h RSAsample.h include/CkRsa.h
all:
$(GPP) $(LFLAGS) $(TARGET) $(CPP) $(LIBS)
通过不使用不需要的库,可以轻松解决库问题(针对其他体系结构构建)。如果要发布makefile,则必须使用某种配置设置来确定正确的体系结构。如果这只是您自己的项目,请选择与您的系统相匹配的项目(通过makefile的外观x86_variant)。
该错误CkRsa::exportPublicKey
是由您的客户端代码引起的:官方符号为CkRsa::ExportPublicKey
-注意E
函数名称开头的大写字母。
这是标头文件:http : //smart-refrigerator-hbnu.googlecode.com/svn/branches/kmy/RFID_CLIENT_/include/CkRsa.h
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句