Trying to compile this C++ code using gcc in Linux. It uses an external library/ the application called SCIP.
I am compiling using this code:
gcc TestC.cpp -I./scipF/scip/src -L./scipF/scip/lib -l./scipF/scip/lib/libscip.a
but I get this error:
/usr/bin/ld: cannot find -l./scipF/scip/lib/libscip.a
The file exists in the folder. Not sure why it is not picking it up to link
#include <iostream> #include "objscip/objscip.h" #include "objscip/objscipdefplugins.h" /** reads parameters */ static SCIP_RETCODE readParams( SCIP* scip, /**< SCIP data structure */ const char* filename /**< parameter file name, or NULL */ ) { if( filename != NULL ) { if( SCIPfileExists(filename)) { std::cout << "reading parameter file <" << filename << ">" << std::endl; SCIP_CALL( SCIPreadParams(scip, filename) ); } else std::cout << "parameter file <" << filename << "> not found - using default parameters" << std::endl; } else if( SCIPfileExists("scipmip.set") ) { std::cout << "reading parameter file <scipmip.set>" << std::endl; SCIP_CALL( SCIPreadParams(scip, "scipmip.set") ); } return SCIP_OKAY; } /** starts SCIP */ static SCIP_RETCODE fromCommandLine( SCIP* scip, /**< SCIP data structure */ const char* filename /**< input file name */ ) { /******************** * Problem Creation * ********************/ std::cout << std::endl << "read problem <" << filename << ">" << std::endl; std::cout << "============" << std::endl << std::endl; SCIP_CALL( SCIPreadProb(scip, filename, NULL) ); /******************* * Problem Solving * *******************/ /* solve problem */ std::cout << "solve problem" << std::endl; std::cout << "=============" << std::endl; SCIP_CALL( SCIPsolve(scip) ); std::cout << std::endl << "primal solution:" << std::endl; std::cout << "================" << std::endl << std::endl; SCIP_CALL( SCIPprintBestSol(scip, NULL, FALSE) ); /************** * Statistics * **************/ std::cout << std::endl << "Statistics" << std::endl; std::cout << "==========" << std::endl << std::endl; SCIP_CALL( SCIPprintStatistics(scip, NULL) ); return SCIP_OKAY; } /** starts user interactive mode */ static SCIP_RETCODE interactive( SCIP* scip /**< SCIP data structure */ ) { SCIP_CALL( SCIPstartInteraction(scip) ); return SCIP_OKAY; } /** creates a SCIP instance with default plugins, evaluates command line parameters, runs SCIP appropriately, * and frees the SCIP instance */ static SCIP_RETCODE runSCIP( int argc, /**< number of shell parameters */ char** argv /**< array with shell parameters */ ) { SCIP* scip = NULL; /********* * Setup * *********/ /* initialize SCIP */ SCIP_CALL( SCIPcreate(&scip) ); /*********************** * Version information * ***********************/ SCIPprintVersion(scip, NULL); std::cout << std::endl; /* include default SCIP plugins */ SCIP_CALL( SCIPincludeDefaultPlugins(scip) ); /************** * Parameters * **************/ if( argc >= 3 ) { SCIP_CALL( readParams(scip, argv[2]) ); } else { SCIP_CALL( readParams(scip, NULL) ); } /*CHECK_OKAY( SCIPwriteParams(scip, "scipmip.set", TRUE) );*/ /************** * Start SCIP * **************/ if( argc >= 2 ) { SCIP_CALL( fromCommandLine(scip, argv[1]) ); } else { printf("\n"); SCIP_CALL( interactive(scip) ); } /******************** * Deinitialization * ********************/ SCIP_CALL( SCIPfree(&scip) ); BMScheckEmptyMemory(); return SCIP_OKAY; } /** main method starting SCIP */ int main( int argc, /**< number of arguments from the shell */ char** argv /**< array of shell arguments */ ) { SCIP_RETCODE retcode; argc = 3; argv [2]= "InputFile"; retcode = runSCIP(argc, argv); if( retcode != SCIP_OKAY ) { SCIPprintError(retcode); return -1; } return 0; }