I have a C project with the following Makefile
:
CC=mpicc
buildsDir: ./builds
mkdir ./builds
main: ./builds message dh main.c
$(CC) -o ./builds/main main.c ./builds/dh.o ./builds/message.o -g -lcrypto -lssl
dh: ./builds dh.c dh.h
$(CC) -c -o ./builds/dh.o dh.c -g -lcrypto -lssl
message: message.c message.h
$(CC) -c -o ./builds/message.o -g ./message.c
run: main
mpirun -quiet -np 3 xterm -hold -e ./builds/main &
debug: main
mpirun -quiet -np 3 xterm -e gdb ./builds/main
.PHONY: clean
clean:
rm -rf ./builds && mkdir ./builds
And in my system I have the OpenSSL 1.0.2g:
OpenSSL 1.0.2g 1 Mar 2016
built on: reproducible build, date unspecified
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/lib/ssl"
But on my prototype software I need a later version of it due to lack of the system-provided one and I want to avoid to install it globally. Thus I thought to use a local-only version limited pro project's scope. I found these instructions that offer me a great framework.
Also I did the first step to add is as a submodule to my project:
[submodule "openssl"]
path = openssl
url = https://github.com/openssl/openssl.git
branch = OPENSSL_1_1_1a
On console I tried to build it manually using the following command set:
cd openssl
./config --prefix=$(pwd)/../builds/openssl --openssldir=$(pwd)/../builds/openssl
make && make test && make install
And now I want to go further and somehow to tel the mpicc
to link the build openssl lib located somehow the builds
dir but I do not know that.
How about changing your makefile like this?
Please check the layout of
builds/openssl
for the correct include & library paths.BONUS CODE personally I would restructure the makefile. Why not let make handle the heavy lifting?