你的位置:
问答吧
-> C/C++
-> 问题详情
linux 下大数库 miracl 的使用方法,求高手指教
现在要做的东西,需要用到 miracl 大数库,在linux 环境中, 我也已经编译好了 miracl.a ,但在使用时总出现些错误
C/C++ code
C/C++ code
//MAKEFILE 文件 如下#source file
SOURCE :=$(wildcard*.c) $(wildcard*.cpp)
OBJS :=$(patsubst%.c,%.o,$(patsubst%.cpp,%.o,$(SOURCE)))
#target you can change test to what you want
TARGET :=../bin/TEST
#compile and lib parameter
CC :=g++LIBS :=miracl.a
LDFLAGS :=DEFINES :=INCLUDE :=-I../miracl/include
CFLAGS :=-g-Wall-O2 $(DEFINES) $(INCLUDE)
CXXFLAGS:=$(CFLAGS)
#i think you shoulddoanything here
.PHONY : everything objs clean veryclean rebuild
everything : $(TARGET)
all : $(TARGET)
objs : $(OBJS)
rebuild: veryclean everything
clean :
rm-fr*.so
rm-fr*.o
rm-fr $(TARGET)
$(TARGET) : $(OBJS)
$(CC) $(CXXFLAGS)-o $@ $(OBJS) $(LDFLAGS) $(LIBS)
用的时候就
#include "miracl.h"
#include "mirdef.h"
然后在一些地方使用 miracl *mip=mirsys(100,0); 等等.....
这样就出错,错误如下:
CryptRegInfo.cpp:76: undefined reference to `mirsys'
CryptRegInfo.cpp:99: undefined reference to `mirvar'
CryptRegInfo.cpp:100: undefined reference to `mirvar'
CryptRegInfo.cpp:101: undefined reference to `mirvar'
CryptRegInfo.cpp:102: undefined reference to `mirvar'
CryptRegInfo.cpp:105: undefined reference to `cinstr'
.........
在linux 下开发时间少,有些东西也不是很清楚
或者谁能给我个 linux 下使用 miracl 库的例子也可以,不甚感激
作者: jspkiss
发布时间: 2011-02-12
我没有使用过miracl库,但是你遇到的是编译问题,所以与miracl.a没有关系(miracl.a需要在链接时用)
你现在需要确定在头文件
#include "miracl.h"
#include "mirdef.h"
中是否包含mirsys、mirvar的定义,你需要看看是否有某些条件编译的选项是否没有打开。
作者: shootingstars
发布时间: 2011-02-12
从提示信息看,还是链接的时候缺少一些函数的实现。
但你的MAKEFILE又加了了这句LIBS :=miracl.a,
你可以检查看是否没添加成功,或者本身你编译miracl的时候就没有编译
这些你用到的函数。
作者: bluesky12312388
发布时间: 2011-02-12
楼上的bluesky12312388,这个不是链接错误,是编译错误。。。
作者: shootingstars
发布时间: 2011-02-12
嗯,是编译错误, 那个 miracl.a 是刚编译好的, 然后再
CC := g++
LIBS :=miracl.a
LDFLAGS :=
DEFINES :=
INCLUDE := -I../miracl/include
CFLAGS := -g -Wall -O2 $(DEFINES) $(INCLUDE)
在miracl.h 中都有那些函数的 方法定义extern, 在windows 上面只需要 miracl.h 和 mirdef.h 这两个头文件再加库就可以运行, linux 上面 不知道是不是也只需要 这两个头文件和miracl.a 库文件,我的程序中只 用到几个miracl函数
作者: jspkiss
发布时间: 2011-02-12
分别这样试试
CC := g++ -m32
如果不行再这样试试
CC := g++ -m64
作者: justkk
发布时间: 2011-02-12
引用 4 楼 jspkiss 的回复:
嗯,是编译错误, 那个 miracl.a 是刚编译好的, 然后再
CC := g++
LIBS :=miracl.a
LDFLAGS :=
DEFINES :=
INCLUDE := -I../miracl/include
CFLAGS := -g -Wall -O2 $(DEFINES) $(INCLUDE)
在miracl.h……
照你说的可行,我们也在做类似的东西,没发现你这样的错误
作者: bluesky12312388
发布时间: 2011-02-12