Как установить флаги c в Rakefile для компиляции расширений через задачу расширения?
У меня есть Rakefile
на Github:
require 'rubygems'
require 'rubygems/package_task'
require 'bundler'
Bundler::GemHelper.install_tasks
require 'rake'
require 'rake/extensiontask'
Rake::ExtensionTask.new do |ext|
ext.name = 'symengine'
ext.ext_dir = 'ext/symengine'
ext.lib_dir = 'lib/'
ext.source_pattern = "**/*.{c,cpp, h}"
end
gemspec = eval(IO.read("symengine.gemspec"))
Gem::PackageTask.new(gemspec).define
У меня установлены все зависимости. Каждый раз, когда я выполняю rake compile
Я получаю ошибку, как это:
make
linking shared-object symengine/symengine.so
/usr/bin/ld: symengine.o: relocation R_X86_64_PC32 against undefined symbol `cbasic_alloc' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
make: *** [symengine.so] Error 1
rake aborted!
Command failed with status (2): [make...]
/home/abinashmeher999/.rvm/gems/ruby-2.2.0/gems/rake-compiler-0.9.5/lib/rake/extensiontask.rb:155:in `block (2 levels) in define_compile_tasks'
/home/abinashmeher999/.rvm/gems/ruby-2.2.0/gems/rake-compiler-0.9.5/lib/rake/extensiontask.rb:154:in `block in define_compile_tasks'
Tasks: TOP => compile => compile:x86_64-linux => compile:symengine:x86_64-linux => copy:symengine:x86_64-linux:2.2.0 => tmp/x86_64-linux/symengine/2.2.0/symengine.so
(See full trace by running task with --trace)
У меня есть подсказка, что я скучаю по -fPIC
флаг для компиляции. Файлы cmake обычно добавляют это (я думаю). Я не знаю, где и как установить флаги в Rakefile
,