【发布时间】:2021-12-14 19:35:07
【问题描述】:
又短又甜:
我正在编写一个使用 zlib 和 sqlite 的 Rcpp 包。
在下面的Makevars.win 文件中,我设置了编译器标志并尝试设置一些目标。
PKG_CPPFLAGS=-I. -I./lib/sqlite/ -fopenmp -march=native -g -O2 -msse2 -fstack-protector -mfpmath=sse\
-DRSQLITE_USE_BUNDLED_SQLITE \
-DSQLITE_ENABLE_RTREE \
-DSQLITE_ENABLE_FTS3 \
-DSQLITE_ENABLE_FTS3_PARENTHESIS \
-DSQLITE_ENABLE_FTS5 \
-DSQLITE_ENABLE_JSON1 \
-DSQLITE_ENABLE_STAT4 \
-DSQLITE_SOUNDEX \
-DRCPP_DEFAULT_INCLUDE_CALL=false \
-DRCPP_USING_UTF8_ERROR_STRING \
-DBOOST_NO_AUTO_PTR \
-DSQLITE_MAX_LENGTH=2147483647 \
-DHAVE_USLEEP=1
PKG_CXXFLAGS=$(CXX_VISIBILITY)
PKG_CFLAGS=$(C_VISIBILITY)
LDFLAGS=-fstack-protector
PKG_LIBS = lib/sqlite/sqlite3.o lib/zlib/adler32.o lib/zlib/compress.o lib/zlib/crc32.o lib/zlib/deflate.o lib/zlib/gzclose.o lib/zlib/gzlib.o lib/zlib/gzread.o lib/zlib/gzwrite.o lib/zlib/infback.o lib/zlib/inffast.o lib/zlib/inflate.o lib/zlib/inftrees.o lib/zlib/trees.o lib/zlib/uncompr.o lib/zlib/zutil.o #-Llib/sqlite/ -lsqlite3
.PHONY: all
all: $(SHLIB)
$(SHLIB): $(PKG_LIBS)
(强调-fstack-protector 标志)
尽管如此,构建窗口中的链接器行是:
C:/rtools40/mingw64/bin/g++ -std=gnu++11 -shared -s -static-libgcc -o OptiLCMSmzDB.dll tmp.def RcppExports.o base64.o mzDBReader.o mzDBWriter.o mzMLReader.o query_mzDB.o spectrum.o lib/sqlite/sqlite3.o lib/zlib/adler32.o lib/zlib/compress.o lib/zlib/crc32.o lib/zlib/deflate.o lib/zlib/gzclose.o lib/zlib/gzlib.o lib/zlib/gzread.o lib/zlib/gzwrite.o lib/zlib/infback.o lib/zlib/inffast.o lib/zlib/inflate.o lib/zlib/inftrees.o lib/zlib/trees.o lib/zlib/uncompr.o lib/zlib/zutil.o -LC:/PROGRA~1/R/R-40~1.4/bin/x64 -lR
有点长,但请注意我们最喜欢的标志不见了。结果,链接器让我遇到了以下数百个实例:
对`__stack_chk_fail'的未定义引用`
我正在使用 rtools40 和 -std=gnu++11 在 Windows 10 上进行编译
如果有任何建议,我将不胜感激。
【问题讨论】:
标签: c++ windows rcpp package-management