以添加fftw3库为例
找到ns-3.xx目录下的wscript,在其中添加以下代码
第一
def configure(conf):
#省略
env = conf.env
conf.env[ fftw3 ] = conf.check(mandatory=True, lib= fftw3 , uselib_store= FFTW3 )
conf.env.append_value( CXXDEFINES , ENABLE_FFTW3 )
conf.env.append_value( CCDEFINES , ENABLE_FFTW3 )
然后(特别注意倒数第二行代码的改动)
def create_ns3_program(bld, name, dependencies=( core ,)):#^^?
program = bld(features= cxx cxxprogram )#<-------------------
program.is_ns3_program = True
program.name = name
program.target = "%s%s-%s%s" % (wutils.APPNAME, wutils.VERSION, name, bld.env.BUILD_SUFFIX)
# Each of the modules this program depends on has its own library.
program.ns3_module_dependencies = [ ns3- +dep for dep in dependencies]
program.includes = "#"
program.use = program.ns3_module_dependencies
if program.env[ ENABLE_STATIC_NS3 ]:
if sys.platform == darwin :
program.env.STLIB_MARKER = -Wl,-all_load,-lfftw3 #<---------------------
else:
program.env.STLIB_MARKER = -Wl,-Bstatic,--whole-archive,-lfftw3 #<------------------------
program.env.SHLIB_MARKER = -Wl,-Bdynamic,--no-whole-archive,-lfftw3 #<---------------------
else:
if program.env.DEST_BINFMT == elf :
# All ELF platforms are impacted but only the gcc compiler has a flag to fix it.
if gcc in (program.env.CXX_NAME, program.env.CC_NAME):
program.env.append_value ( SHLIB_MARKER , -Wl,--as-needed )#--no-as-needed->--as-needed 特别注意这句
return program
最后
def add_scratch_programs(bld):
all_modules = [mod[len("ns3-"):] for mod in bld.env[ NS3_ENABLED_MODULES ] + bld.env[ NS3_ENABLED_CONTRIBUTED_MODULES ]]
try:
for filename in os.listdir("scratch"):
if filename.startswith( . ) or filename == CVS :
continue
if os.path.isdir(os.path.join("scratch", filename)):
obj = bld.create_ns3_program(filename, all_modules)
obj.path = obj.path.find_dir( scratch ).find_dir(filename)
obj.source = obj.path.ant_glob( *.cc )
obj.target = filename
obj.name = obj.target
obj.install_path = None
obj.uselib = FFTW3 #<---------------------
elif filename.endswith(".cc"):
name = filename[:-len(".cc")]
obj = bld.create_ns3_program(name, all_modules)
obj.path = obj.path.find_dir( scratch )
obj.source = filename
obj.target = name
obj.name = obj.target
obj.install_path = None
obj.uselib = FFTW3 #<------------------------------------
except OSError:
return
保存后,再次使用./waf的时候即可链接外部库
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END
















暂无评论内容