Compiling Fortran code that use hplots - fortran

I am working on a Fortran code that plots some data and I am having the following error:
Undefined symbols for architecture x86_64:
"_hplots_", referenced from:
_MAIN__ in ifortaBEBFS.o
_clspak_ in ifortaBEBFS.o
_opnpak_ in ifortaBEBFS.o
"_number_", referenced from:
_MAIN__ in ifortaBEBFS.o
(maybe you meant: _for__this_image_number_or_zero)
"_plot_", referenced from:
_MAIN__ in ifortaBEBFS.o
_pltline_ in ifortaBEBFS.o
ld: symbol(s) not found for architecture x86_64
The error comes from:
character*32 filenm
open(8,file=filenm)
call hplots(1,1,8,0)
return
end
I am just trying to compile the .f code with ifort or gfortran.
The code comes from the following git repository https://github.com/usgs/finite-fault/blob/db126a5e05dd2ca1950909ac0be9811cfe115019/src/plot/vangodshJ.f

First I didnt had Generic Mapping Tools so I had to install it. Also the program needed two other fortran codes that were not in the same folder so moving them to the same folder and compiling it as follows solved the problem.
ifort vangodshJ.f calpak.f laspac.f -o vangodshJ.out

Related

Fortran 90 Interface for IPOPT

I have tried the pyipopt to run IPOPT. That works well.
But I am using Fortran 90 now. I look into the example hs071_f in IPOPT for the Fortran interface. I guess it is written in Fortran 77? Unfortunately, I really don't understand.
I was wondering whether there was a Fortran 90 interface?
Though I just found a Fortran90 Interface Source from http://apmonitor.com/wiki/index.php/Main/DownloadIpopt, I cannot build it. Is it because I am using Mac but the source is for Windows?
Errors:
gfortran hs071.f90 -o vfi.out -fbounds-check -O2
Undefined symbols for architecture x86_64:
"_ipaddintoption_", referenced from:
_MAIN__ in cculABQh.o
"_ipaddnumoption_", referenced from:
_MAIN__ in cculABQh.o
"_ipaddstroption_", referenced from:
_MAIN__ in cculABQh.o
"_ipcreate_", referenced from:
_MAIN__ in cculABQh.o
"_ipfree_", referenced from:
_MAIN__ in cculABQh.o
"_ipopenoutputfile_", referenced from:
_MAIN__ in cculABQh.o
"_ipsolve_", referenced from:
_MAIN__ in cculABQh.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
Looking forward to anyone's advice! Thanks in advance!

Build Error when compiling c++ code which includes MATLAB Engine Library

I have Simple c++ Code that works fine while also using #include "engine.h" for the use of MATLAB in the c++ code.I am also using some functions like mxArray(), mxCreateDoubleMatrix() & mxSetPr(). After going to terminal and compiling the code with g++ -o main main.cpp the following errors occur
Undefined symbols for architecture x86_64:
"_engClose", referenced from:
_main in main-438cf4.o
"_engEvalString", referenced from:
_main in main-438cf4.o
"_engOpen", referenced from:
_main in main-438cf4.o
"_engPutVariable", referenced from:
_main in main-438cf4.o
"_mxCreateDoubleMatrix_730", referenced from:
_main in main-438cf4.o
"_mxSetPr", referenced from:
_main in main-438cf4.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I don't think I need to put my actual code here since I am assuming this error has to do with compatibility issues not the code itself. If i'm wrong I will edit the post
P.S. I am using os Sierra. ( i have also tried compiling with xcode 9.0.1, same errors occur)
Thanks

clang++ linker undefined symbols for architecture x86_64

$clang++ main.cpp -o out
Got following error, the same error happens when changing to g++. I have tested on some simple simple c++ code, the command works fine. So it the problem in that PNG class file? However, the same files worked on my MacOS before, but suddenly failed today.
Undefined symbols for architecture x86_64:
"PNG::writeToFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
_main in main-f6a06a.o
"PNG::PNG(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
_main in main-f6a06a.o
"PNG::PNG(unsigned long, unsigned long)", referenced from:
_main in main-f6a06a.o
"PNG::~PNG()", referenced from:
_main in main-f6a06a.o
"PNG::operator()(unsigned long, unsigned long)", referenced from:
_main in main-f6a06a.o
"PNG::width() const", referenced from:
_main in main-f6a06a.o
"PNG::height() const", referenced from:
_main in main-f6a06a.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Did you miss providing static/shared to the linker to resolve the linker errors for the methods mentioned? Also note that clang++ is a different compiler compared to g++ and hence need the static/shared libraries compiled prior by the same compiler you are using (clang++).
Try:
clang++ main.cpp -o out -lpng
Here's why: You are not providing the library that contains the implementation of your PNG library (libpng most likely). You need -lpng added to your compiler, so that it links with the relevant library. It may not be exactly -lpng in your particular case, but it's definitely a "missing library". Without knowing exactly what library you are trying to use (you didn't provide some source to "try the fix with").
As pointed out in the comment: you are using some kind of C++ wrapper on top, the above is probably not enough - but without knowing exactly which C++ wrapper on the png functionality you are actually using, it's hard to say what the command-line should look like.
Perhaps this

Undefined symbols for architecture x86_64:"cv::face::createFisherFaceRecognizer(int, double)", referenced from: _main in main.o

I am working on facial recognition in video using opencv. I followed the tutorial on opencv's website(http://docs.opencv.org/modules/contrib/doc/facerec/tutorial/facerec_video_recognition.html). I get following error when I try to build my code in xcode.
Undefined symbols for architecture x86_64:
"cv::face::createFisherFaceRecognizer(int, double)", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation).
I made a few changes to the code as given in here fatal error: opencv2/contrib/contrib.hpp' file not found (open cv already built)
Please guide me through it as I am new to opencv.
Thanks in advance!

libcurl issue when using D's std.net.curl on Mac

I'm trying to get up to speed using libcurl with D on Mac.
I'm using the latest dmd2 compiler (DMD64 D Compiler v2.062).
The following example compiles and works fine on Windows:
import std.net.curl, std.conv, std.stdio;
void main() {
string content = to!string(get("dlang.org"));
writeln(content);
}
When compiling it on Mac I get the following output:
~/src $ dmd dcurl.d
Undefined symbols for architecture x86_64:
"_curl_easy_cleanup", referenced from:
_D3std3net4curl4Curl8shutdownMFZv in libphobos2.a(curl_1522_37c.o)
"_curl_easy_duphandle", referenced from:
_D3std3net4curl4Curl3dupMFZS3std3net4curl4Curl in libphobos2.a(curl_151e_149.o)
"_curl_easy_init", referenced from:
_D3std3net4curl4Curl10initializeMFZv in libphobos2.a(curl_151d_432.o)
"_curl_easy_perform", referenced from:
_D3std3net4curl4Curl7performMFbZi in libphobos2.a(curl_1528_2fb.o)
"_curl_easy_setopt", referenced from:
_D3std3net4curl4Curl3setMFE3etc1c4curl10CurlOptionlZv in libphobos2.a(curl_1525_14c.o)
_D3std3net4curl4Curl3setMFE3etc1c4curl10CurlOptionAxaZv in libphobos2.a(curl_1524_14c.o)
_D3std3net4curl4Curl3setMFE3etc1c4curl10CurlOptionPvZv in libphobos2.a(curl_1526_14c.o)
_D3std3net4curl4Curl5clearMFE3etc1c4curl10CurlOptionZv in libphobos2.a(curl_1527_207.o)
"_curl_easy_strerror", referenced from:
_D3std3net4curl4Curl11errorStringMFiZAya in libphobos2.a(curl_1520_4a1.o)
"_curl_global_cleanup", referenced from:
_D3std3net4curl4Curl19_sharedStaticDtor29FZv in libphobos2.a(curl.o)
"_curl_global_init", referenced from:
_D3std3net4curl4Curl19_sharedStaticCtor28FZv in libphobos2.a(curl.o)
"_curl_slist_append", referenced from:
_D3std3net4curl3FTP3dupMFZS3std3net4curl3FTP in libphobos2.a(curl_1518_ea.o)
_D3std3net4curl3FTP10addCommandMFAxaZv in libphobos2.a(curl_1518_ea.o)
_D3std3net4curl4HTTP3dupMFZS3std3net4curl4HTTP in libphobos2.a(curl_1517_140.o)
_D3std3net4curl4HTTP16addRequestHeaderMFAxaAxaZv in libphobos2.a(curl_1517_140.o)
"_curl_slist_free_all", referenced from:
_D3std3net4curl3FTP4Impl6__dtorMFZv in libphobos2.a(curl_1518_ea.o)
_D3std3net4curl3FTP13clearCommandsMFZv in libphobos2.a(curl_1518_ea.o)
_D3std3net4curl4HTTP4Impl6__dtorMFZv in libphobos2.a(curl_1517_140.o)
_D3std3net4curl4HTTP19clearRequestHeadersMFZv in libphobos2.a(curl_1517_140.o)
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
--- errorlevel 1
Which seems to imply a linking issue.
I have libcurl at:
/usr/lib/libcurl.3.dylib /usr/lib/libcurl.4.dylib /usr/lib/libcurl.dylib
But I'm not even sure whether dmd is trying to use them.
I've done this before with C/C++ (on the same machine using these libraries) so I think it must be a versioning issue or else I need to pass some flags to the compiler.
Any help would be most appreciated.
You need to link against libcurl. It's not linked against by default. So, instead of
dmd dcurl.d
you need to do
dmd -L-lcurl dcurl.d