Hello, i am new in Nim.
I am testing this example and want compile with useNimRtl for use dynlib in the future.
The example code is
import asyncnet, asyncdispatch, net, osproc, os
var server: AsyncSocket
let port = 9090
let publicKey = "publicKey.pem"
let secretKey = "secretKey.pem"
proc handle(client: AsyncSocket) {.async.} =
while true:
var line: string = ""
try:
line = await client.recvLine()
except:
echo "socket breaks in read:", getCurrentExceptionMsg()
break
if line == "":
echo "client disconnected"
if not client.isClosed:
client.close()
break
try:
await client.send("GOT: " & line & "\n")
except:
echo "socket breaks in send:", getCurrentExceptionMsg()
break
proc createKeyFiles() =
## creates neccessary certificates for ssl socket.
echo "[+] going to create ssl certificates"
let res = execCmd "openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout " & secretKey & " -out " & publicKey
if res != 0:
echo "[-] could not create keyfiles"
quit()
echo "[+] keys created"
proc main() {.async.} =
if not (fileExists(publicKey) or fileExists(secretKey)): createKeyFiles()
server = newAsyncSocket()
server.setSockOpt(OptReuseAddr, true)
server.setSockOpt(OptReusePort, true)
server.bindAddr(Port port)
server.listen()
var ctx = newContext(certFile = publicKey, keyFile = secretKey)
wrapSocket(ctx, server)
echo "listening on port ", port
while true:
var (address, client) = await server.acceptAddr()
echo "connection from: ", address
wrapConnectedSocket(ctx, client, handshakeAsServer)
asyncCheck client.handle
waitFor main()
Extracted from https
My dev environment is linux mint 19.1 amd64. I test compile with stable Nim 0.20.0 and devel.
>nim c -o:libnimrtl.so ../.choosenim/toolchains/nim-#devel/lib/nimrtl.nim
Compilation done.
>nim c -d:ssl -d:useNimRtl -d:nmDebugDlOpen app.nim
Hint: used config file '/home/t/.choosenim/toolchains/nim-#devel/config/nim.cfg' [Conf]
Hint: used config file '/home/t/.choosenim/toolchains/nim-#devel/config/config.nims' [Conf]
Hint: system [Processing]
Hint: widestrs [Processing]
Hint: io [Processing]
Hint: app [Processing]
Hint: asyncnet [Processing]
Hint: asyncdispatch [Processing]
Hint: os [Processing]
Hint: strutils [Processing]
Hint: parseutils [Processing]
Hint: math [Processing]
Hint: bitops [Processing]
Hint: macros [Processing]
Hint: algorithm [Processing]
Hint: unicode [Processing]
Hint: pathnorm [Processing]
Hint: osseps [Processing]
Hint: posix [Processing]
Hint: times [Processing]
Hint: options [Processing]
Hint: typetraits [Processing]
Hint: tables [Processing]
Hint: hashes [Processing]
Hint: heapqueue [Processing]
Hint: lists [Processing]
Hint: asyncstreams [Processing]
Hint: asyncfutures [Processing]
Hint: deques [Processing]
Hint: cstrutils [Processing]
Hint: monotimes [Processing]
Hint: nativesockets [Processing]
Hint: net [Processing]
Hint: sets [Processing]
Hint: openssl [Processing]
Hint: dynlib [Processing]
Hint: selectors [Processing]
Hint: epoll [Processing]
Hint: osproc [Processing]
Hint: strtabs [Processing]
Hint: streams [Processing]
Hint: cpuinfo [Processing]
Hint: linux [Processing]
CC: stdlib_assertions.nim
CC: stdlib_dollars.nim
CC: stdlib_io.nim
CC: stdlib_system.nim
CC: stdlib_strutils.nim
CC: stdlib_options.nim
CC: stdlib_times.nim
CC: stdlib_os.nim
CC: stdlib_heapqueue.nim
CC: stdlib_deques.nim
CC: stdlib_cstrutils.nim
CC: stdlib_asyncfutures.nim
CC: stdlib_monotimes.nim
CC: stdlib_nativesockets.nim
CC: stdlib_sets.nim
CC: stdlib_dynlib.nim
CC: stdlib_openssl.nim
CC: stdlib_net.nim
CC: stdlib_selectors.nim
CC: stdlib_asyncdispatch.nim
CC: stdlib_asyncnet.nim
CC: stdlib_osproc.nim
CC: app.nim
Hint: [Link]
Hint: operation successful (72913 lines compiled; 2.177 sec total; 90.285MiB peakmem; Debug Build) [SuccessX]
>
Compilation done.
When execute the application get:
> LD_LIBRARY_PATH=./ ./app
could not import: csuCmpIgnoreStyle
>
If compile without -d:useNimRtl work well.
>nim c -d:ssl -d:nmDebugDlOpen app.nim
Hint: used config file '/home/t/.choosenim/toolchains/nim-#devel/config/nim.cfg' [Conf]
Hint: used config file '/home/t/.choosenim/toolchains/nim-#devel/config/config.nims' [Conf]
Hint: system [Processing]
Hint: widestrs [Processing]
Hint: io [Processing]
Hint: app [Processing]
Hint: asyncnet [Processing]
Hint: asyncdispatch [Processing]
Hint: os [Processing]
Hint: strutils [Processing]
Hint: parseutils [Processing]
Hint: math [Processing]
Hint: bitops [Processing]
Hint: macros [Processing]
Hint: algorithm [Processing]
Hint: unicode [Processing]
Hint: pathnorm [Processing]
Hint: osseps [Processing]
Hint: posix [Processing]
Hint: times [Processing]
Hint: options [Processing]
Hint: typetraits [Processing]
Hint: tables [Processing]
Hint: hashes [Processing]
Hint: heapqueue [Processing]
Hint: lists [Processing]
Hint: asyncstreams [Processing]
Hint: asyncfutures [Processing]
Hint: deques [Processing]
Hint: cstrutils [Processing]
Hint: monotimes [Processing]
Hint: nativesockets [Processing]
Hint: net [Processing]
Hint: sets [Processing]
Hint: openssl [Processing]
Hint: dynlib [Processing]
Hint: selectors [Processing]
Hint: epoll [Processing]
Hint: osproc [Processing]
Hint: strtabs [Processing]
Hint: streams [Processing]
Hint: cpuinfo [Processing]
Hint: linux [Processing]
CC: app.nim
Hint: [Link]
Hint: operation successful (72913 lines compiled; 1.444 sec total; 90.527MiB peakmem; Debug Build) [SuccessX]
>LD_LIBRARY_PATH=./ ./app
listening on port 9090
I have not idea how to debug this issue. Thank you in advance.